android recyclerview怎么实现在滑动的过程中进行网络请求

2025-01-02 23:56:10
推荐回答(1个)
回答1:

 1puteVerticalScrollOffset();   然而compute方法计算出的并不是滑动的精确距离,stackOverflow上有答案解释其为 item 的平均高度 * 可见 item 数目,不是我们需要的精确距离。   3. 还有人说可以尝试getChildAt(0)   [java] view plain copy   totalDy = recyclerView.getChildAt(0).getTop();   依靠第一个item的滑动距离来进行动画的设置,但是根据该方法得出的 totalDy 在滑动到一定程度后清零。   这是因为recyclerViewl.getChildAt(0) 返回的永远是第一个可见的child,不是所有view list 的第一个child,因此这种用法是得不到滑动距离的。   另外下面这三种用法都是等价的,都是获取第一个可见的child:   [java] view plain copy   LinearLayoutManager layoutManager = (LinearLayoutManager) this.getLayoutManager();   View firstVisiableChildView = this.getChildAt(0);   View firstVisiableChildView = layoutManager.getChildAt(0)   int position = layoutManager.findFirstVisibleItemPosition();   View firstVisiableChildView = layoutManager.getChildAt(position)   但是下面这种就不是获取第一个可见的child,而是获得所有view list 的第一个child。但是滑动一段距离后它总是返回null,即第一个child被recycle后,总是返回null。   [java] view plain copy   //Don't use this function to get the first item, it will return null when the first item is recycled.   LinearLayoutManager layoutManager = (LinearLayoutManager) this.getLayoutManager();   View child2 = layoutManager.findViewByPosition(0);   4.如果LayoutManager用的是LinearLayoutManager,强烈推荐下面的方法获取滑动距离:   [java] view plain copy   public int getScollYDistance() {   LinearLayoutManager layoutManager = (LinearLayoutManager) this.getLayoutManager();   int position = layoutManager.findFirstVisibleItemPosition();   View firstVisiableChildView = layoutManager.findViewByPosition(position);   int itemHeight = firstVisiableChildView.getHeight();   return (position) * itemHeight - firstVisiableChildView.getTop();   }