我遇到以下情况,但找不到解决方案。 我有一个项目的 ListView ,现在,当用户向上滚动 ListView 时,我想在 ListView 的开头加载越来越多的项目,这样用户就永远不会到达 ListView 的头部(顶部) ,然后继续滚动。
问题是,在我将项目添加到列表后,我在 listView 中出现了一点差距\跳跃 - 所有项目都向上移动了一点,而不是停留在它们在上的位置应该尖叫。
例子:
listView 索引是:
0
1
2
3
4 <- 第一个可见项
5
6
7
8 <- 最后一个可见项
9
10
现在,假设用户向上滚动并到达第 3 项,在这种情况下我要添加 ListView be 处的项目:
例子:
0-7为新元素
0
1
2
3
4
5
6
7
8 <- 之前的“3”项 9
10
11
12
13
14
15
我不会让用户意识到 listView 变大了,所以我试图以当前显示的 listViews 项目不移动的方式操纵 listView 的位置和偏移量。
int position = listView.getFirstVisiblePosition();
listView.setSelectionFromTop(position + NUM_OF_NEW_ITEMS, 0);
这就是我到达显示的最顶层 View 的开始的方式,但是如果 View 没有在屏幕上显示 - 我会在该项目的偏移量大小上跳跃(该项目的开头与屏幕上 listView 外观的开头之间的距离)
有人知道怎么解决吗?也许以某种方式玩滚动条位置或将偏移大小添加到 ListView 当前位置?
我希望我是清楚的 谢谢
最佳答案
看起来您正在寻找一个动态加载的 ListView ,具有特定的加载首选项,有几个这样的库,例如 EndlessAdapter
:https://github.com/commonsguy/cwac-endless
或者如果你只是想要一些代码,你可以自己修改:http://p-xr.com/android-tutorial-dynamicaly-load-more-items-to-the-listview-never-ending-list/
关于android - 将新项目添加到 ListView 的开头,并保持滚动位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13673054/