我有非常简单的代码,该代码应该根据数据指示进行几篇文章工作,但由于某种原因不是。
我正在尝试将RecycleView与DataBinding一起使用。
class ItemViewHolder extends RecyclerView.ViewHolder{
ViewAgendaItemBinding binding;
public ItemViewHolder(View itemView) {
super(itemView);
binding = ViewAgendaItemBinding.bind(itemView); //this is line where it's throw an error.
}
}
我检查了此bind
方法的生成版本,看起来像:
public static ViewAgendaItemBinding bind(android.view.View view, android.databinding.DataBindingComponent bindingComponent) {
if (!"layout/view_agenda_item_0".equals(view.getTag())) {
throw new RuntimeException("view tag isn't correct on view:" + view.getTag());
}
return new ViewAgendaItemBinding(bindingComponent, view);
}
这很奇怪。因为我没有layout/view_agenda_item_0
。此视图应使用layout/view_agenda_item
,并且我非常不设置任何标签。但是,即使我为此确切的元素设置了这些标签,它仍然不起作用。
我该怎么办?
P.S。但是,如果我将此代码ViewAgendaItemBinding.bind(itemView)
更改为此DataBindingUtils.bind(itemView)
,则可以正常工作。数据列表中的问题是一个问题吗?
数据绑定在编译过程中的布局文件重新编写,因此它将自动添加标签。
DataBindingUtils.bind
检查视图上是否存在现有绑定并重新使用它。看起来其他地方已经在该视图上绑定了初始化的数据。我认为我们应该将ViewAgendaItemBinding.bind
方法更改为同样的方法。