2017-08-29 72 views
1

我想創建一個無限列表,當我滾動到列表的結尾時,我的列表將顯示第一個項目,第二個項目......在結尾()。如:Android中的無限列表

item[0] 
........ 
item[last] 
item[0] 
item[1] 

我想到的第一件事是我將雙倍列表,以便它可以顯示,如我所願。 不幸的是,這是一個壞主意,因爲我的列表的大小會越來越大,並且加載一個大列表對於性能不是很好(顯然)。 你們能告訴我其他解決方案來處理這種情況嗎?非常感謝你 。

+0

您是否找到了解決方案?你爲什麼不迴應建議的變種? –

回答

1

使用RecyclerView,您可以通過幾個步驟實現您想要的功能。這個想法是將適配器的項目數量設置爲無窮大,並將您的第一個項目放到無窮大的中間。

在你的Adapter覆蓋getItemCount()這樣的方法。

@Override 
public int getItemCount() { 
    return Integer.MAX_VALUE;// Not the infinity, but I'm not sure someone will scroll about 2 million items and find out that's a cheat 
} 

然後在您使用RecyclerView類,得到LayoutManager並設置起始位置適配器itemCount的中間。

LinearLayoutManager layoutManager = getLayoutManager(); 
    int pos = (Integer.MAX_VALUE/2); //Voila, you are in the middle of infinity 
    layoutManager.scrollToPosition(pos); 
    yourAdapter.setLayoutManager(layoutManager); 

這樣做你可以滾動列表中的任何方向高達約2 000 000滾動,沒有容器的大小增加任何性能問題。

+0

什麼是recuclerView?是RecyclerView,對嗎? – Btnisme123

+0

是的,特赦!已編輯。 –

0

當用戶觸及頁面底部時,您需要更新您的列表。 您可以跟蹤滾動偵聽器中頁面的結尾。 一旦用戶達到或達到頁面底部的底部,只需將您的列表加倍或按照您的要求擴展即可。 因爲我們需要在每一行中存儲或顯示每個項目的數據,所以需要擴展或加倍您的列表。 同樣的事情發生在分頁概念。清楚地知道我們不是擴展名單不必要的,我們正在延伸,當我們真正需要。

您可以訪問此link無限滾動與AdapterViews和RecyclerView。

+0

「擴展或加倍你的列表是必需的」我有你的想法,但如果我滾動更多,如:我滾動到列表的末尾(列表A)它會顯示新列表(列表B)的開始,如果我滾動更多,我應該刪除列表A停止增長名單,這是真的嗎? ) – Btnisme123

0

使用onScrollListener()和到了結束的時候,使用則爲list.size()+ VisibleItems(從列表中可見的最終產品),並把它們先在陣列和更新您的適配器的數據
對不起非常簡報解釋!!!