提问人:Unnamed 提问时间:12/23/2017 最后编辑:Gholamali IraniUnnamed 更新时间:12/24/2017 访问量:1182
RecyclerView OnBindViewHolder 对某些回收行调用超过 1 次
RecyclerView OnBindViewHolder called more then 1 times for some recycle rows
问:
我想澄清回收器在一个方向上滚动时的行为,例如从上到下。
正如我所看到的,即使我们每次都只向下滚动,也可以为某些行调用几次。下面,我列出了带有手机号码的通话记录:OnBindViewHolder
OnBindViewHolder
1,
2,
3,
4,
5,
6,
7,
8,
3,
4,
5,
6...
这是意料之中的吗?
如果是这样,我需要将单元格外观动画放在什么位置?在这种情况下,当我放入动画时,我的动画也会播放几次。该目标的常见方法是什么?
谢谢。OnBindViewHolder
答:
0赞
kalabalik
12/24/2017
#1
这适用于检测新的部分可见项目视图:
recyclerView.addOnChildAttachStateChangeListener(new RecyclerView.OnChildAttachStateChangeListener() {
@Override
public void onChildViewAttachedToWindow(final View view) {
view.setBackgroundColor(0xffff0000);
view.postDelayed(new Runnable() {
@Override
public void run() {
view.setBackgroundColor(0xff00ff00);
}
}, 2000);
}
@Override
public void onChildViewDetachedFromWindow(View view) {
}
});
检测新的完全可见的项目视图更为复杂。您需要使用 and 查找以下两个调用结果的更改:OnScrollListener
layoutManager.findFirstCompletelyVisibleItemPosition();
和
layoutManager.findLastCompletelyVisibleItemPosition();
如果我没记错的话,您需要跟踪那些可见且已触发动画的项目。
评论
OnBindViewHolder