我已经使用RececlerView
ViewHolder
模式暂时使用了Adapter
。
我正在实施自定义onBindViewHolder
。
我不是在我的代码中搜索特定的错误帮助。
我只是想知道,如果这是正常的,onBindViewHolder
方法被多次调用(对于同一个项目),同时滚动到列表的末尾并向上滚动。在这种情况下,对于项目0和1再次调用@property
def hangar(self):
return self._hangar
(该列表总共包含7个项目)
是否有可能在没有通知数据已更改的情况下调用此方法?
我有点困惑。
亲切的问候, 棕榈
答案 0 :(得分:6)
是的,RecyclerView
多次拨打onBindViewHolder()
是完全正常的。
RecyclerView
仅创建填充屏幕所需的最小Views
个数。它通过重用旧的/创建的Views
来工作。因此,当您向下滚动视图时,在滚动到顶部时隐藏的视图将被移除并显示在最后一个可见View
旁边并添加到那里。但是,由于View
当前与旧数据onBindViewHolder()
绑定,因此再次调用View
以确保onCreateViewHolder()
在呈现之前仅与正确的数据绑定。
同样,您会注意到Views
仅被称为所需的RecyclerView
的确切最小数量。
为了更好地理解RecyclerView
的工作原理,我建议你阅读Recycler,LayoutManager和Recycler.Adapter cabal-install
的三个核心部分。