【问题标题】:How can I access checkbox view in a RecyclerView Adapter class from a layout file?如何从布局文件访问 RecyclerView 适配器类中的复选框视图?
【发布时间】:2021-05-31 03:59:30
【问题描述】:
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
}

}

这是适配器类。

Link to layout xml file for adapter class

我想要的是从里面的xml文件中访问复选框和textview

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

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

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

【问题讨论】:

  • 您的代码似乎没问题,您的具体问题是什么?
  • 好吧,我们不能使用 kotlin 合成访问 textview 和 checkboxes 和其他视图,因为它已被弃用。
  • 如果它在 MainActivity.kt 中,我会使用 ViewBinding 并访问视图/按钮/复选框。
  • 该行应该是这样的: holder.itemView.apply { binding.tvTask.text = todos[position].title binding.cbTask.isChecked = todos[position].isChecked } 但这不是' t 工作,因为我不知道如何在这种情况下使用 ViewBinding。

标签: android kotlin android-layout android-recyclerview


【解决方案1】:

要启用 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...
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多