Android: RecyclerView的绑定

Android: binding of RecyclerView

我在 RecyclerView 中做了一个简单的绑定。

我这样创建了 ViewHolder:

class ItemViewHolder extends RecyclerView.ViewHolder{
    ItemBinding binding;

    public ItemViewHolder(View itemView) {
        super(itemView);
        binding = DataBindingUtil.bind(itemView);
    }
}

绑定是这样完成的

@Override
public void onBindViewHolder(ItemViewHolder holder, int position) {
    MyItem item= items.get(position);
    // bind model with data
    holder.binding.setItem(item);
}

看了this教程,看到ViewHolder是这样的:

public class MyViewHolder extends RecyclerView.ViewHolder {
    // each data item is just a string in this case
    private final ViewDataBinding binding;

    public MyViewHolder(ViewDataBinding binding) {
        super(binding.getRoot());
        this.binding = binding;
    }
    public void bind(Object obj) {
        binding.setVariable(BR.obj,obj);
        binding.executePendingBindings();
    }
}

适配器是

 @Override
 public void onBindViewHolder(MyViewHolder holder, int position) {
     final TemperatureData temperatureData = data.get(position);
     holder.bind(temperatureData);
 }

我的问题是如果没有它也能工作,为什么我们需要 public void bind(Object obj) 方法?

我的代码比较少,而且可以正常工作,但是我是新手 Android 我害怕错过一些东西。

此方法确保为任何 class 生成 setters。

但在大多数情况下,这不是必需的。

所以是的,你可以删除这个方法——这里可能发生的最糟糕的事情是你向你的应用程序添加了一个 class 而 setter 不会生成(此时你知道在哪里寻找解决方案)

More info here