2016-07-25 40 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