Получить значение TextView внутри класса адаптера в Kotlin - PullRequest
0 голосов
/ 30 октября 2018

В моей деятельности есть кнопка добавления и добавления, которая будет увеличивать и уменьшать счет при нажатии кнопки. Как получить текущее значение моего текстового представления внутри класса Adapter.

inner class MoviesAdapter : RecyclerView.Adapter<MoviesAdapter.MovieViewHolder>() {

            val addtocount: TextView=itemView.findViewById(R.id.movieCount)

            val testcount:String=addtocount.toString()
}

    public  fun add(view:View)
    {
        movieCount.setText(""+id)
        movieCount.setText("" + ++id)
        println("Final Count is $id")

    }
    fun sub(view: View)
    {
        if (id>0) {
            movieCount.setText("" + --id)
        }
        else
        {
            id=0
        }
    }

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Я предполагаю, что идентификатор textview равен movieCount, и это то, что вам нужно внутри адаптера.
В своей деятельности создайте этот метод:

fun getCount(): String {
    return movieCount.text.toString()
}

Изменить заголовок адаптера следующим образом:

inner class MoviesAdapter(context: Context) : RecyclerView.Adapter<MoviesAdapter.MovieViewHolder>()

и прямо под ним добавьте эту строку:

val activity: MainActivity = context as MainActivity

измените MainActivity на название класса вашей деятельности.
Теперь, когда вы хотите, чтобы текст movieCount находился внутри адаптера, просто наберите:

activity.getCount()

Вы должны изменить создание экземпляра адаптера в своем классе активности, потому что теперь вам нужно передать контекст действия, поэтому сделайте что-то вроде:

recyclerview.adapter = MoviesAdapter(this)
0 голосов
/ 30 октября 2018

Вам необходимо определить все виды вашего адаптера в классе viewHolder:

class MovieViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    val addtocount: TextView = itemView.findViewById(R.id.movieCount)
}

И сделайте свою логику в адаптере в onBindViewHolder методе:

class MoviesAdapter : RecyclerView.Adapter<MoviesAdapter.MovieViewHolder>() {

    override fun onBindViewHolder(holder: MovieViewHolder, position: Int) {
        // here you can access to holder and all it views
        val testcount: String = holder.addtocount.toString()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...