2016-07-25 37 views
4

如何循环访问Android RecyclerView中的项目?如何循环浏览Android RecyclerView中的项目?

我想要一个水平滚动的RecyclerView。当到达右端时,只需重新启动项目列表即可继续滚动。左边一样。


例如:
项目清单:0,1,2,3,4,5,6,7,8,9
开始视图显示:0,1,2,3 ,4,5,6,7
向后滚动5个项目向右:5,6,7,8,9,0,1,2
向左滚动2个项目后:8,9,0,1 ,2,3,4,5

+0

延长'RecyclerView'像往常一样,覆盖在达到极限时检索下一个/前一个元素,并更新索引以零/最大值必要的方法..... –

回答

5

另一个想法是,getItemCount()适配器回报Integer.MAX_VALUE,然后为了得到你的项目,你应该做的itemsList.get(position % list.size)
这样,当滚动超出您的实际列表大小从0开始再次显示最后一个

一件事做后面的列表的第一个元素可能是在LayoutManager其中x % yourList.size() == 0调用scrollToPosition(int x)且x somwhere接近Integer.MAX_VALUE/2这样滚动看起来像在每一个方向无限(约1个十亿位置从出发点开始)

正如在评论中指出的那样,如果列表大小为0,getItemCount应该返回0.例如,

return list.size == 0 ? 0 : Integer.MAX_VALUE 
+0

我认为如果我们将它向右滚动,它会起作用,但当我们向左滚动时,如何计算? –

+0

我描述它的方式将从0索引开始,所以你不能滚动到左​​边,你可以做的一件事就是在'LayoutManager'上调用'scrollToPosition(int x)',其中'x% yourList.size()== 0'和x在某种程度上接近'Integer.MAX_VALUE/2'的地方,这样滚动看起来就像是无限的(从起点到每个方向大约10亿个位置) – lelloman

+0

这正是我正在寻找和它完美的作品。谢谢! – studersi

-1

我有个这样的想法
首先制作新的列表= 3x原始列表

original list: 0,1,2,3,4,5,6,7,8,9 
new list  : 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 

当第一次显示RecyclerView时,您应该滚动RecyclerView到正确的10个项目(10是原始列表的大小)。然后,如果用户向左或向右滚动少于10个项目,它将像圆圈一样工作。

当他们到达右边或左边的末端时,您应该滚动RecyclerView回到您第一次显示RecyclerView的状态。 纠正我,如果我错了。感谢您的帮助

+0

感谢您的建议,但我要去与一个@lelloman建议。它不需要存储太多的数据。 – studersi