我的活动中有一个添加和一个子按钮,当按下按钮时,它们会增加和减少计数。如何在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
}
}
答案 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)