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)
来查找我的有效负载?
由于
答案 0 :(得分:2)
来自Android文档:
部分绑定与完全绑定:
有效负载参数是来自notifyItemChanged(int的合并列表 Object)或notifyItemRangeChanged(int,int,Object)。如果有效载荷 list不为空,ViewHolder当前绑定到旧数据和 适配器可以使用有效负载信息运行有效的部分更新。如果 有效负载为空,适配器必须运行完全绑定。适配器不应该 假设将通过通知方法传递的有效负载 onBindViewHolder()。例如,视图未附加到 屏幕,notifyItemChange()中的有效负载将被简单地删除。
这是一个列表,因为它是一个合并列表。在更新视图之前,您可能会多次调用notifyItemChanged
,每次都有可能不同的有效负载。
例如,同时,多个线程可以同时请求具有有效负载“最爱计数更新”和“图标更改”和“时间戳更新”的项目更新。因此,假设您的有效负载是第0项是不明智的。