我希望在向一个方向滚动时澄清回收行为,例如从上到下。
正如我所看到的,即使我们每次只向下滚动,OnBindViewHolder
也会被调用几次。下面,我列出了OnBindViewHolder
调用日志,其中包含单元格编号:
1,
2,
3,
4,
5,
6,
7,
8,
3,
4,
5,
6...
预期吗?
如果是这样,我需要将细胞外观动画放入哪个地方?在这种情况下,当我将动画放入OnBindViewHolder
时,我的动画也会播放几次。这个目标的常用方法是什么?
感谢。
答案 0 :(得分:0)
这适用于检测新的部分可见项目视图:
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) {
}
});
检测新的完全可见的项目视图更复杂。您需要使用OnScrollListener
并查找以下两个调用的结果更改:
layoutManager.findFirstCompletelyVisibleItemPosition();
和
layoutManager.findLastCompletelyVisibleItemPosition();
如果我没有弄错的话,你需要跟踪那些可见的项目以及你已经开始动画的项目。