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...
}
}