RecyclerView onBindViewHolder 为一项调用多次
RecyclerView onBindViewHolder called multiple times for one item
我使用 RececlerView
和 ViewHolder
模式有一段时间了。
我正在实施自定义 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
的三个核心部分。
我使用 RececlerView
和 ViewHolder
模式有一段时间了。
我正在实施自定义 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
的三个核心部分。