循环RecyclerView

use*_*126 5 android android-recyclerview

假设我们有以下一组项目视图:

View1 -> View2 -> View3 -> ... -> View(n-1) -> View(n)
Run Code Online (Sandbox Code Playgroud)

在经典的RecyclerView上,View1将位于第一个位置,View(n)位于最后一个位置.现在我想制作那个循环,所以在最后一个位置之后我们再次滚动到第一个位置:

View1 -> View2 -> View3 -> ... -> View(n-1) -> View(n) -> View1 -> View2 -> ...
Run Code Online (Sandbox Code Playgroud)

这看起来很简单,但我不确定如何在View(n)之后完成"重置".任何建议都会非常有用.谢谢.

mis*_*032 5

请参阅此解决方案以获取ListView.你可以写一个RecyclerView.AdapterInteger.MAX_VALUE项目的东西.唯一的区别是RecyclerView不再有setSelectionFromTop方法.相反,你应该打电话

recyclerView.getLayoutManager().scrollToPosition(recyclerAdapter.MIDDLE);
Run Code Online (Sandbox Code Playgroud)

为了首先将recyclerView滚动到中间.


Ton*_*tos 0

我自己没有这样做过,但我认为这种方法会起作用。

首先,您需要知道哪些视图已附加/可见。层次结构更改侦听器可以执行此操作,或者填充项目视图的自定义视图。不管怎样,当你接近适配器的一端时,你只需开始铺设轨道即可;从适配器的另一端删除项目并将它们添加到这一端,同时调用notifyRangeInserted和notifyRangeRemoved。删除和插入的视图应该位于显示区域之外,因此不会发生动画,但对于 GridLayoutManager,您将需要以列数的倍数进行工作。

您必须考虑当没有足够的内容来填充回收器视图时该怎么办。您可能还希望在滚动时在回收器视图之前至少有几个项目,您可能必须添加重复项才能执行此操作。我希望一次至少向前移动一屏内容。

我想滚动指示器会出问题。自定义布局管理器可以提供一个非常好的指标。