gpt4 book ai didi

java - 为什么 RecyclerView 的 onBindViewHolder 中的 payloads 是一个列表?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:04:21 24 4
gpt4 key购买 nike

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

我知道当我们想要更新一些不在 RecyclerView 项目中的 View 时,我可以使用

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

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

谢谢

最佳答案

来自 Android 文档:

Partial bind vs full bind:

The payloads parameter is a merge list from notifyItemChanged(int, Object) or notifyItemRangeChanged(int, int, Object). If the payloads list is not empty, the ViewHolder is currently bound to old data and Adapter may run an efficient partial update using the payload info. If the payload is empty, Adapter must run a full bind. Adapter should not assume that the payload passed in notify methods will be received by onBindViewHolder(). For example when the view is not attached to the screen, the payload in notifyItemChange() will be simply dropped.

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

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

关于java - 为什么 RecyclerView 的 onBindViewHolder 中的 payloads 是一个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46753986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com