为什么RecyclerView'onBindViewHolder中的有效负载是一个列表?

时间:2017-10-15 10:20:03

标签: java android android-recyclerview recycler-adapter

 public void onBindViewHolder(VH holder, int position, List<Object> payloads) {
        onBindViewHolder(holder, position);
 }

我知道当我们想要在RecyclerView项目中更新某些视图时,我可以使用

public final void notifyItemChanged(int position, Object payload) {
        mObservable.notifyItemRangeChanged(position, 1, payload);
}

正如该代码所示,param是一个对象,但为什么在Adapter中它会更改为list,我必须使用list.get(0)来查找我的有效负载?

由于

1 个答案:

答案 0 :(得分:2)

来自Android文档:

  

部分绑定与完全绑定:

     

有效负载参数是来自notifyItemChanged(int的合并列表   Object)或notifyItemRangeChanged(int,int,Object)。如果有效载荷   list不为空,ViewHolder当前绑定到旧数据和   适配器可以使用有效负载信息运行有效的部分更新。如果   有效负载为空,适配器必须运行完全绑定。适配器不应该   假设将通过通知方法传递的有效负载   onBindViewHolder()。例如,视图未附加到   屏幕,notifyItemChange()中的有效负载将被简单地删除。

这是一个列表,因为它是一个合并列表。在更新视图之前,您可能会多次调用notifyItemChanged,每次都有可能不同的有效负载。

例如,同时,多个线程可以同时请求具有有效负载“最爱计数更新”和“图标更改”和“时间戳更新”的项目更新。因此,假设您的有效负载是第0项是不明智的。