有时,具体是那一个绑定类是未知的。例如,针对任意布局操作的RecyclerView.Adapter不知道具体会使用那个绑定类。它必须在调用onBindViewHolder()方法的过程中去绑定值。
在以下示例中,RecyclerView绑定到的所有布局都有一个item变量。BindingHolder对象有一个返回ViewDataBinding基类的getBinding()方法。
override fun onBindViewHolder(holder: BindingHolder, position: Int) {
item: T = items.get(position)
holder.binding.setVariable(BR.item, item);
holder.binding.executePendingBindings();
}
注意:DataBinding框架会在模块包中生成一个名为BR的类,该类包含用于数据绑定的资源的ID。在前面的示例中,库会自动生成BR.item变量。
译者注释:
- holder.binding 等价于holder.getBinding方法
- 每个item布局文件需要有item这个data节点 ,这样就可以不需要指导具体是那个Binding类,直接调用基类的setVariable方法来绑定数据
网友评论