1
我得到了一个ListView,显示了特定类别中的所有内容以及从Web服务器提取数据的服务。我提出了很多数据,如果我重新提取数据,将其提供给适配器并通知数据更改,整个listview将被刷新。一方面没有问题,但我希望用户保持他留在屏幕上的相同位置。在ListView中插入行而不移动Android中的屏幕
是否可以保持相同的偏移量或在表格中只插入1行而无需将屏幕移动到列表顶部?
我得到了一个ListView,显示了特定类别中的所有内容以及从Web服务器提取数据的服务。我提出了很多数据,如果我重新提取数据,将其提供给适配器并通知数据更改,整个listview将被刷新。一方面没有问题,但我希望用户保持他留在屏幕上的相同位置。在ListView中插入行而不移动Android中的屏幕
是否可以保持相同的偏移量或在表格中只插入1行而无需将屏幕移动到列表顶部?
您需要为当前选定的索引维护两个变量,而从列表视图顶部的所选项目的顶部位置维持第二个变量。
int listSelectedIndex,top;
使用下列方法保存当前列表位置。您应该在通知数据更改之前调用此方法。
private void saveListPosition() {
listSelectedIndex = listView.getFirstVisiblePosition();
View v = lstQuoteProducts.getChildAt(0);
top = (v == null) ? 0 : v.getTop();
}
通知数据更改呼叫以下方法重置列表的保存位置。
listView.setSelectionFromTop(listSelectedIndex, top);
如何刷新列表视图? – Ferdau