RecyclerView onBindViewHolder为一个项目多次调用

时间:2018-01-26 21:48:50

标签: android listview android-recyclerview recycler-adapter android-viewholder

我已经使用RececlerView ViewHolder模式暂时使用了Adapter。 我正在实施自定义onBindViewHolder

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

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

是否有可能在没有通知数据已更改的情况下调用此方法?

我有点困惑。

亲切的问候, 棕榈

1 个答案:

答案 0 :(得分:6)

是的,RecyclerView多次拨打onBindViewHolder()是完全正常的。

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

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

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