android - 将新项目添加到 ListView 的开头,并保持滚动位置

标签 android listview android-listview listviewitem listview-adapter

我遇到以下情况,但找不到解决方案。 我有一个项目的 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/

相关文章:

android - 如何在android中 ListView 整行可选?

android - 调用 ListView.addHeaderView() 时出现 ClassCastException?

java - 如何在 Android Studio 中使用 Java 中自己的对象创建数组。

java - android中的GridView,gridView.setAdapater(this)错误

java - Android 多个 parcelable 构造函数

android - 在 ListView 的行中定位项目的问题

javascript - 如何删除使用带有合金框架的钛?

asp.net - 有谁知道在 asp.net ListView 中隐藏列的方法?

Java Android - 修复了带有 ListView 的页脚

android - EditText 提示不会消失