在Kotlin的Adapter类内检索TextView值

时间:2018-10-29 23:36:54

标签: android kotlin

我的活动中有一个添加和一个子按钮,当按下按钮时,它们会增加和减少计数。如何在Adapter类中获取textview的当前值。

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 :(得分:0)

您需要在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()
    }
}

答案 1 :(得分:0)

我假设textview的ID是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)