在ListView顶部添加新项目不起作用。而是将项目添加到底部

时间:2013-03-17 09:34:14

标签: android android-listview android-asynctask

我在ListView中添加新项目以显示ListView的顶部时遇到一些困难。但是,当新项目添加到ListView时,我希望当前项目保持可见状态,并将新项目添加到其上方。

为此,我从这里开始遵循解决方案:https://stackoverflow.com/a/3035521/450534当这也不起作用时,我开始尝试一点。

另外值得一提的是我正在使用Chris Banes的Pull to Refresh库。

现在奇怪的是,当我在paged的最后一项下面添加ListView数据时,一切正常。但我很难过为什么新物品不会放在当前物品上方并维持当前位置。这是我到目前为止所做的(在onPostExecute()中):

// GET THE CURRENT LISTVIEW POSITION (USED TO MAINTAIN SCROLL POSITION)
int currentPosition = actualListView.getFirstVisiblePosition();
Log.e("POSITION", String.valueOf(currentPosition));

View v = actualListView.getChildAt(0);

int top = (v == null) ? 0 : v.getTop();
Log.e("TOP", String.valueOf(top));

/*****  APPEND NEW DATA TO THE ADAPTER AND THE LISTVIEW     *****/
// CAST THE ADAPTER (AGAIN)
adapter = new NewsFeedAdapter(getActivity(), arrFeeds);

// SET THE ADAPTER TO THE LISTVIEW
actualListView.setAdapter(adapter);

// SET THE SCROLL POSITION
actualListView.setSelectionFromTop(currentPosition, top);

lv.onRefreshComplete();

这是ListView的开头,这是在顶部添加新项目后仍然可以看到的(在此之上)。我计划显示一个小布局,显示有多少新的Feed在顶部。像Facebook应用程序现在做的事情。

Start Of the ListView

但新项目会添加到ListView的底部,而不是现有项目的顶部。

New items are added to the bottom of the ListView

我错过了一些明显的东西吗?如果您需要我添加更多代码,请告诉我,我会立即添加。

1 个答案:

答案 0 :(得分:3)

另一个替代方法是将项目添加到您用来填充适配器的ArrayList的0 poisiton。

  your_array_list.add(int index, Object element) //Inserts the specified element at the specified position in this list.

添加后,您可以在listAdapter上调用notifyDataSetChanged()。

请确认是否有效..