RecyclerView onBindViewHolder为一个项目多次调用

Pal*_*alm 5 android listview android-viewholder recycler-adapter android-recyclerview

我已经使用了RececlerViewViewHolder现在一会儿模式.我正在实施一个自定义Adapter.

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

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

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

我有点困惑.

亲切的问候,Palm

Abb*_*bas 6

是的,多次RecyclerView呼叫是完全正常的onBindViewHolder().

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

同样地,您会注意到onCreateViewHolder()它只被称为所需的确切最小数量Views.

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