将新项添加到listview的开头,并保持滚动位置

时间:2012-12-02 19:44:27

标签: 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项,在这种情况下我正在添加 列表视图中的项目:

示例:

0-7是新项目

0

1

2

3

4

5

6

7

8< - 之前的“3”项目 9

10

11

12

13

14

15

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

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

这是我进入显示最顶层视图的BEGINNING的方式,但是如果视图没有显示在屏幕上 - 我正在跳过该项目的偏移大小(该项目的开头与屏幕上listView外观的开头之间的距离)

有没有人知道如何解决它?可能会以某种方式使用滚动条位置或将偏移大小添加到列表视图当前位置?

我希望我很清楚 谢谢

1 个答案:

答案 0 :(得分:0)

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

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