RecyclerView onBindViewHolder 为一项调用多次

RecyclerView onBindViewHolder called multiple times for one item

我使用 RececlerViewViewHolder 模式有一段时间了。 我正在实施自定义 Adapter.

我不是在我的代码中搜索特定的错误帮助。

我只是想知道,如果正常,onBindViewHolder 方法在滚动到列表末尾并向上滚动时被多次调用(对于同一项目)。在这种情况下 onBindViewHolder 再次为项目 0 和 1 调用(列表总共包含 7 个项目)

是否有可能在不通知数据卫星已更改的情况下再次调用此方法?

有点糊涂

亲切的问候, 手掌

是的,RecyclerView 多次调用 onBindViewHolder() 是完全正常的。

A RecyclerView 仅创建填充屏幕所需的最小数量 Views。它通过重用 old/created Views 来工作。因此,当您向下滚动时,在滚动到顶部期间隐藏的视图将被删除并带到最后一个可见的 View 旁边并添加到那里。但是由于 View 当前与旧数据绑定 onBindViewHolder() 再次调用以确保 View 在呈现之前仅与正确的数据绑定。

同样,您会注意到 onCreateViewHolder() 仅被称为所需的 Views 的确切最小数量。

为了更好地理解 RecyclerView 的工作原理,我建议您阅读 Recycler、LayoutManager 和 Recycler.Adapter RecyclerView 的三个核心部分。