【问题标题】:why payloads in RecyclerView' onBindViewHolder is a list?为什么 RecyclerView' onBindViewHolder 中的有效载荷是一个列表?
【发布时间】:2018-03-27 00:15:36
【问题描述】:
 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);
}

正如该代码所见,参数是一个对象,但为什么在适配器中它更改为列表,我必须使用list.get(0) 来查找我的有效负载?

谢谢

【问题讨论】:

    标签: java android android-recyclerview


    【解决方案1】:

    来自 Android 文档:

    部分绑定与完全绑定:

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

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

    例如,同时,多个线程可以同时请求带有有效负载“fav count update”和“icon change”和“time stamp update”的项目更新。所以假设你的有效载荷是第 0 项是不明智的。

    【讨论】:

      猜你喜欢
      • 2019-07-30
      • 2014-11-10
      • 1970-01-01
      • 2016-07-02
      • 2023-03-08
      • 2016-07-09
      • 2021-10-12
      • 2020-03-03
      • 1970-01-01
      相关资源
      最近更新 更多