【问题标题】:Retaining scroll position on Pull To Refresh在拉动刷新时保持滚动位置
【发布时间】:2013-03-15 07:06:17
【问题描述】:

我在我的安卓应用中使用PullToRefresh。到目前为止它工作正常。

我面临的问题是,当我从 TOP 新行下载“发布以刷新”上的新 x 行时,新行会推送现有行并从 0 位置开始,这对用户来说很烦人。我想要的是,下载新的行列表后应该保留在那里,让用户向下查看新的行集。

知道如何实现这一目标吗?

【问题讨论】:

    标签: android android-listview pull-to-refresh


    【解决方案1】:

    这是我用的

    //Get old position before updating adapter
    final int old_pos = mListView.getRefreshableView().getFirstVisiblePosition()+1;
    //Set Adapter
    mListView.setAdapter(mListAdapter);
    
    //Set the list to old postion
    //mListView.getRefreshableView().setSelection(old_pos);
    mListAdapter.notifyDataSetChanged();
    mListView.onRefreshComplete();
    
    mListView.post(new Runnable() {
    
            @Override
            public void run() {
                // TODO Auto-generated method stub
                mListView.getRefreshableView().setSelection(old_pos);
            }
        });
    

    也检查一下: Maintain/Save/Restore scroll position when returning to a ListView

    【讨论】:

    • 如果我们使用 PullToRefreshListView ListView,getFirstVisiblePosition() 和 setSelection() 都不可用。
    • 另外,根据我的理解,如果我从 TOP 提取数据,那么 fristVisiblePosition() 应该始终为零,不是吗?
    • 我已经更新了我的答案,检查一下我添加了 getRefreshableView() 它将有两种方法,如果你从顶部拉,你应该在顶部添加行,从底部拉也一样。是的,当从顶部拉出时,TOP 将为零
    • 好的,从 getRefreshableView() 获取可刷新实例。尝试了你的建议,但没有奏效。事实上,我看到了 [code here] (github.com/chrisbanes/Android-PullToRefresh/blob/master/library/…),它巧妙地处理了问题。但这对我不起作用。
    • 这不是简洁的设计,因为您正在设置值是新线程。
    猜你喜欢
    • 2011-07-31
    • 1970-01-01
    • 2013-07-12
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 2020-02-29
    相关资源
    最近更新 更多