如何从布局文件访问RecyclerView Adapter类中的复选框视图


class TodoAdapter (var todos:List<Todo>) : RecyclerView.Adapter<TodoAdapter.TodoViewHolder>() {
inner class TodoViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TodoViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.todo_layout, parent, false)
return TodoViewHolder(view)
}
override fun onBindViewHolder(holder: TodoViewHolder, position: Int) {
holder.itemView.apply {
}
}
override fun getItemCount(): Int {
return todos.size
}

}

这是适配器类。

适配器类布局xml文件的链接

我想要的是从内的xml文件访问复选框和文本视图

holder.itemView.apply{
tvTask.text = todos[position].title
cbTask.isChecked = todos[position].isChecked
}

title和isChecked分别是在字符串和布尔类型的数据类中声明的变量

我的内部类包含itemViews,因为我正在尝试制作一个待办事项应用程序。因此,它将项返回给构造函数。

要启用ViewBinding,请将以下代码添加到应用程序级build.gradle文件中。

android {
...
buildFeatures {
viewBinding true
}
}

XML文件是用layout标记包装的,这似乎很好。

现在重构ViewHolder类的构造函数,以获取binding变量。

inner class TodoViewHolder(val binding: TodoLayoutBinding) : RecyclerView.ViewHolder(binding.root)

注意:这里inner修饰符是可选的。

binding变量可以在onBindViewHolder方法的holder变量中访问。

override fun onBindViewHolder(holder: TodoViewHolder, position: Int) {
holder.binding.apply {
// ...access the views here...
}
}

最新更新