2014-06-25 20 views
1

我得到了一个ListView,显示了特定类别中的所有内容以及从Web服务器提取数据的服务。我提出了很多数据,如果我重新提取数据,将其提供给适配器并通知数据更改,整个listview将被刷新。一方面没有问题,但我希望用户保持他留在屏幕上的相同位置。在ListView中插入行而不移动Android中的屏幕

是否可以保持相同的偏移量或在表格中只插入1行而无需将屏幕移动到列表顶部?

+0

如何刷新列表视图? – Ferdau

回答

0

您需要为当前选定的索引维护两个变量,而从列表视图顶部的所选项目的顶部位置维持第二个变量。

int listSelectedIndex,top; 

使用下列方法保存当前列表位置。您应该在通知数据更改之前调用此方法。

private void saveListPosition() { 

     listSelectedIndex = listView.getFirstVisiblePosition(); 
     View v = lstQuoteProducts.getChildAt(0); 
     top = (v == null) ? 0 : v.getTop(); 
    } 

通知数据更改呼叫以下方法重置列表的保存位置。

listView.setSelectionFromTop(listSelectedIndex, top); 
相关问题