我想創建一個無限列表,當我滾動到列表的結尾時,我的列表將顯示第一個項目,第二個項目......在結尾()。如:Android中的無限列表
item[0]
........
item[last]
item[0]
item[1]
我想到的第一件事是我將雙倍列表,以便它可以顯示,如我所願。 不幸的是,這是一個壞主意,因爲我的列表的大小會越來越大,並且加載一個大列表對於性能不是很好(顯然)。 你們能告訴我其他解決方案來處理這種情況嗎?非常感謝你 。
我想創建一個無限列表,當我滾動到列表的結尾時,我的列表將顯示第一個項目,第二個項目......在結尾()。如:Android中的無限列表
item[0]
........
item[last]
item[0]
item[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滾動,沒有容器的大小增加任何性能問題。
什麼是recuclerView?是RecyclerView,對嗎? – Btnisme123
是的,特赦!已編輯。 –
當用戶觸及頁面底部時,您需要更新您的列表。 您可以跟蹤滾動偵聽器中頁面的結尾。 一旦用戶達到或達到頁面底部的底部,只需將您的列表加倍或按照您的要求擴展即可。 因爲我們需要在每一行中存儲或顯示每個項目的數據,所以需要擴展或加倍您的列表。 同樣的事情發生在分頁概念。清楚地知道我們不是擴展名單不必要的,我們正在延伸,當我們真正需要。
您可以訪問此link無限滾動與AdapterViews和RecyclerView。
「擴展或加倍你的列表是必需的」我有你的想法,但如果我滾動更多,如:我滾動到列表的末尾(列表A)它會顯示新列表(列表B)的開始,如果我滾動更多,我應該刪除列表A停止增長名單,這是真的嗎? ) – Btnisme123
使用onScrollListener()和到了結束的時候,使用則爲list.size()+ VisibleItems(從列表中可見的最終產品),並把它們先在陣列和更新您的適配器的數據
對不起非常簡報解釋!!!
您是否找到了解決方案?你爲什麼不迴應建議的變種? –