android-recyclerview - Kotlin - RecyclerView.ViewHolder 子类 - 无法访问额外的属性

标签 android-recyclerview kotlin

我已经实现了 RecyclerView.ViewHolder 子类,如下所示:

class PersonViewHolder(itemView: View, binding: ViewDataBinding) : RecyclerView.ViewHolder(itemView) { }

现在我正在尝试访问在 RecyclerView.Adapter 的子类中声明的绑定(bind)属性:
override fun onBindViewHolder(holder: PersonViewHolder?, position: Int) {
        val person = persons[position]

        if (holder != null) {
            holder.binding.setVariable(BR.person, person) // line with error
            holder.binding.executePendingBindings() // line with error
        }
    }

但是编译器在提示 - Unresolved reference: binding
这是完整的实现:
class PersonsAdapter(private var persons: Array<Person>) : RecyclerView.Adapter<PersonsAdapter.PersonViewHolder>() {
    override fun onBindViewHolder(holder: PersonViewHolder?, position: Int) {
        val person = persons[position]

        if (holder != null) {
            holder.binding.setVariable(BR.person, person)
            holder.binding.executePendingBindings()
        }
    }

    override fun getItemCount(): Int {
        return persons.size
    }

    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): PersonViewHolder {
        val itemView = LayoutInflater.from(parent!!.context).inflate(R.layout.list_item_person, parent, false)
        return PersonViewHolder(itemView, DataBindingUtil.bind(itemView))
    }

    class PersonViewHolder(itemView: View, binding: ViewDataBinding) : RecyclerView.ViewHolder(itemView) { }
}

如果我在这里遗漏任何东西,有什么想法吗?请建议。

最佳答案

binding: ViewDataBinding - 你只是定义一个构造函数参数,它永远不会保存为类的成员。使用 var 标记它或 val让它存储参数并在以后访问它。

关于android-recyclerview - Kotlin - RecyclerView.ViewHolder 子类 - 无法访问额外的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46472547/

相关文章:

Android:CardView 即将推出操作栏

android - 房间内完全一对一的关系

android - android滚动时图像在recylerview中被替换了吗?

android - 使用 MVVM 架构和数据绑定(bind)时如何突出显示 recyclerview 项目?

android - Proguard 和 RecyclerView 项目装饰

android - Recycler查看项目并滑动以显示按钮

android - 使用 View 绑定(bind)访问另一个 Activity 的 UI 元素

intellij-idea - 为什么 smart cast 如此突出?

kotlin - Kotlin 中的内部类继承

android - Saripaar formvalidation 在 kotlin 中第二次不起作用