[Android Pro] 精确记录和恢复ListView滑动位置

Posted atom blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Android Pro] 精确记录和恢复ListView滑动位置相关的知识,希望对你有一定的参考价值。

reference to : http://blog.csdn.net/welovesunflower/article/details/7926512

工作中遇到一个需求,对ListView某一项操作后刷新ListView,但是如果直接刷新,界面上ListView从第一列开始显示,用户体验不好,于是在网上搜了一些恢复LIstView滑动位置的方法。解决办法如下:

1 :

// 设置ListView到记录的位置  
mListView.setSelection(mPosition);  
mListView.setOnScrollListener(new OnScrollListener() {  
    // 滚动状态改变时调用 
    @Override  
    public void onScrollStateChanged(AbsListView view, int scrollState) {  
        // 不滚动时保存当前滚动到的位置  
        if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {  
            mPosition = mListView.getFirstVisiblePosition();  
        }  
    }  
 // 滚动时调用 
    @Override  
    public void onScroll(AbsListView view, int firstVisibleItem,  
            int visibleItemCount, int totalItemCount) {  
    }  
});

2:

//给ListView设置监听器
backgroundList.setOnScrollListener(scrollListener);
private OnScrollListener scrollListener = new OnScrollListener() {
 
                @Override
                public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) {
                }
 
                @Override
                public void onScrollStateChanged(AbsListView view, int scrollState) {
                        if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
                                // scrollPos记录当前可见的List顶端的一行的位置 
                               scrollPos = myList.getFirstVisiblePosition(); 
                        }
                        if (arrayList != null) {  
              View v=myList .getChildAt(0);
              scrollTop=(v==null)?0:v.getTop();
            }  
         }
        };

调用setAdapter之后恢复位置:
myList .setSelectionFromTop(scrollPos, scrollTop);

 

以上是关于[Android Pro] 精确记录和恢复ListView滑动位置的主要内容,如果未能解决你的问题,请参考以下文章

android listview.setselection(position)的作用是啥

使用 Android MediaRecorder 暂停和恢复(API 级别 < 24)

如何在 Android 应用中使用 Smack 从 Openfire 服务器恢复两个用户之间的聊天记录

[Android Pro] 常用的android工具类和库

小米笔记本pro15.6英寸频繁蓝屏故障解决记录

记录文件加密软件 Gilisoft File Lock Pro v11.0 中文注册版