在Android中加载更多数据后恢复listview(带标题)位置

时间:2015-08-14 08:13:02

标签: android listview chat

我正在开发一个聊天应用程序,我需要在从服务器加载更多数据后恢复listview项目位置。我使用反向listview(android:stackFromBottom =“true”android:transcriptMode =“normal”)与标题视图并使用下面的代码来保存位置 firstVisibleItem = mListView.getFirstVisiblePosition(); oldCount = mListAdapter.getCount(); View view = mListView.getChildAt(0); position = (view == null ? 0 : view.getBottom()- mListView.getPaddingBottom());

和以下代码重新存储位置

mListView.setSelectionFromTop(firstVisibleItem + mListAdapter.getCount() - oldCount+1, position);

恢复的位置不完全相同,向上移动一个项目。如何在这里考虑标题视图高度???

我试过

View view = mListView.getChildAt(1); 
View view = mListView.getChildAt(-1); 

但同样的问题

1 个答案:

答案 0 :(得分:0)

我猜你需要这样做,因为当你拥有新数据时,即使新数据只是旧数据,也可以通过调用setAdapter替换旧适配器。 +一些新事物。

如果您没有更换适配器,只是更改它所拥有的数据(例如,只需添加项目),ListView默认情况下就会按照您的意愿运行。要完成此操作,请确保您有办法更新适配器中的数据,并在完成后调用notifyDataSetChanged。在UI线程上执行这些操作以避免与ListView同步问题。