我想创建一个无限列表,当我滚动到列表的结尾时,我的列表将显示第一个项目,第二个项目......在结尾()。如: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(从列表中可见的最终产品),并把它们先在阵列和更新您的适配器的数据
对不起非常简报解释!!!
您是否找到了解决方案?你为什么不回应建议的变种? –