如何将ViewBinding与Kotlin中已经存在的内部类一起使用RecyclerView适配器



TodoAdapter.kt

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

上面是Recycler视图适配器类。

我已经有了一个内部类TodoAdapter。如何使用ViewBinding?

我想从中访问视图的布局文件是todo_layout.xml

我假设您熟悉ViewBinding。以下是如何将ViewBinding与RecyclerViewAdapter一起使用。

这将是您的TodoAdapter.kt

class TodoAdapter (var todos:List<Todo>) : RecyclerView.Adapter<TodoAdapter.TodoViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TodoViewHolder {
val binding = TodoLayoutBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return TodoViewHolder(binding)
}
override fun onBindViewHolder(holder: TodoViewHolder, position: Int) {
holder.bind()
}
override fun getItemCount(): Int {
return todos.size
}
inner class TodoViewHolder(private val binding: TodoLayoutBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(){
binding.apply{
// Assign Values
}
}
}
}

现在,在TodoViewHolder绑定函数调用中,您可以访问所有视图。

显示如下。DataBindingUtil和getRoot((显示为红色。当我将鼠标悬停在它上面时,android studio要求我创建类、枚举、接口等,对于getRoot(,它显示为创建引用和创建扩展函数

主构造函数调用在超级(binding.root(上出现预期错误

最新更新