我已经实现了 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/