RecyclerView OnBindViewHolder为一些回收行调用了1次以上

时间:2017-12-23 12:53:52

标签: android xamarin android-recyclerview

我希望在向一个方向滚动时澄清回收行为,例如从上到下。 正如我所看到的,即使我们每次只向下滚动,OnBindViewHolder也会被调用几次。下面,我列出了OnBindViewHolder调用日志,其中包含单元格编号:

1,
2,
3,
4,
5,
6,
7,
8,
3,
4,
5,
6...

预期吗?

如果是这样,我需要将细胞外观动画放入哪个地方?在这种情况下,当我将动画放入OnBindViewHolder时,我的动画也会播放几次。这个目标的常用方法是什么? 感谢。

1 个答案:

答案 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();

如果我没有弄错的话,你需要跟踪那些可见的项目以及你已经开始动画的项目。