3

我有以下情况,我找不到解决方案。我有一个项目的列表视图,现在,当用户向上滚动列表视图时,我想在列表视图的开头加载越来越多的项目,这样用户将永远不会到达列表视图的头部(顶部) ,然后继续滚动。

问题是,在我将项目添加到列表后,我在 listView 中出现了一点差距\跳跃 - 所有项目都在向上移动一点,而不是保持它们应该在尖叫声中的位置。

例子:

listView 索引是:

0

1

2

3

4 <- 第一个可见项目

5

6

7

8 <- 最后一个可见项目

9

10

现在,假设用户向上滚动并到达第 3 项,在这种情况下,我将在 listView 的开头添加项目:

例子:

0-7 是新项目

0

1

2

3

4

5

6

7

8 <- 9 之前的“3”项

10

11

12

13

14

15

我不会让用户意识到 listView 变大了,所以我试图操纵 listView 的位置和偏移量,使当前显示的 listViews 项目不会移动。

int position = listView.getFirstVisiblePosition();
listView.setSelectionFromTop(position + NUM_OF_NEW_ITEMS, 0);

这就是我到达显示的最顶部视图的开头的方式,但是如果视图没有在屏幕上显示interlay - 我会在该项目的偏移大小上得到一个跳跃(之间的距离该项目的开头和屏幕上 listView 外观的开头)

有人知道如何解决吗?也许以某种方式使用滚动器位置或将偏移大小添加到列表视图当前位置?

我希望我很清楚谢谢

4

1 回答 1

0

看起来您正在寻找一个动态加载的列表视图,具有特定的加载首选项,有几个类似的库EndlessAdapterhttps ://github.com/commonsguy/cwac-endless

或者,如果您只想要一些代码,您可以自己修改:http: //p-xr.com/android-tutorial-dynamicaly-load-more-items-to-the-listview-never-ending-list/

于 2012-12-03T00:35:02.400 回答