我已经将 RececlerView 与 ViewHolder 模式结合使用了一段时间。
我正在实现自定义 Adapter。
我不是在我的代码中搜索特定的错误帮助。
我只是想知道,如果它是正常的,onBindViewHolder 方法在滚动到列表末尾并向上滚动时被多次调用(对于同一项目)。在这种情况下,onBindViewHolder 再次为项目 0 和 1 调用(该列表总共包含 7 个项目)
是否有可能在不通知数据卫星已更改的情况下再次调用此方法?
我有点困惑。
亲切的问候, 手掌
最佳答案
是的,RecyclerView 多次调用 onBindViewHolder() 是完全正常的。
RecyclerView 仅创建填充屏幕所需的最少数量的 Views。它通过重用旧的/创建的 Views 来工作。因此,当您向下滚动时,在滚动到顶部期间隐藏的 View 将被删除并带到最后一个可见的 View 旁边并添加到那里。但是由于 View 当前与旧数据绑定(bind) onBindViewHolder() 再次调用以确保 View 之前仅与正确的数据绑定(bind)它被渲染。
同样,您会注意到 onCreateViewHolder() 仅调用它所需的确切的最小 Views 数量。
为了更好地理解 RecyclerView 的工作原理,我建议您阅读 Recycler、LayoutManager 和 Recycler.Adapter 这三个 RecyclerView 的核心部分。
关于android - RecyclerView onBindViewHolder 为一项调用多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48470052/