【问题标题】:Inserting rows in ListView without moving the screen in Android [duplicate]在ListView中插入行而不在Android中移动屏幕[重复]
【发布时间】:2014-08-15 14:52:28
【问题描述】:

我有一个 ListView 显示特定类别中的所有内容,以及一个从 Web 服务器提取数据的服务。我正在呈现大量数据,如果我重新提取数据,请将其提供给适配器并通知数据更改,整个列表视图将被刷新。一方面没有问题,但我希望用户保持他留在屏幕上的相同位置。

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

【问题讨论】:

  • 如何刷新列表视图?

标签: android listview android-listview


【解决方案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);

【讨论】:

    猜你喜欢
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多