我已经使用RececlerView
和ViewHolder
模式一段时间了。
我正在实现自定义的Adapter
。
我不是在寻找代码中特定的错误帮助。
我只是想知道,在滚动到列表末尾并向上滚动时,onBindViewHolder
方法被调用多次(针对同一项)是否正常。 在这种情况下,onBindViewHolder
再次为项0和1调用(列表总共包含7个项)
有没有可能在不通知数据集更改的情况下再次调用此方法?
我有点困惑了。
此致 敬礼,Palm
我已经使用RececlerView
和ViewHolder
模式一段时间了。
我正在实现自定义的Adapter
。
我不是在寻找代码中特定的错误帮助。
我只是想知道,在滚动到列表末尾并向上滚动时,onBindViewHolder
方法被调用多次(针对同一项)是否正常。 在这种情况下,onBindViewHolder
再次为项0和1调用(列表总共包含7个项)
有没有可能在不通知数据集更改的情况下再次调用此方法?
我有点困惑了。
此致 敬礼,Palm
一个 RecyclerView
调用多次 onBindViewHolder()
是完全正常的。
RecyclerView
只创建填充屏幕所需的最小数量的 Views
。它通过重用旧/已创建的 Views
来工作。因此,当您向下滚动时,隐藏在滚动到顶部期间的视图将被移除并放置在最后可见 View
旁边,然后添加在那里。但是由于 View
目前绑定了旧数据,因此会再次调用 onBindViewHolder()
,以确保该 View
绑定的仅是正确的数据,然后才呈现。
同样,您会注意到 onCreateViewHolder()
只调用所需的精确最小数量的 Views
。
为了更好地了解 RecyclerView
的工作原理,建议您阅读 Recycler、LayoutManager 和 Recycler.Adapter 这三个核心部分的相关信息。