zoukankan      html  css  js  c++  java
  • [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);
  • 相关阅读:
    SQL经常使用语法
    【LeetCode】Generate Parentheses 解题报告
    Linux进程间通信(IPC)
    Android菜单menu控件大全
    Android入门常见问题
    c++ struct与class的差别
    hdu 2011 多项式求和
    Android安全机制介绍
    HDOJ 4003 Find Metal Mineral
    HDU 2845 Beans (两次线性dp)
  • 原文地址:https://www.cnblogs.com/0616--ataozhijia/p/6110837.html
Copyright © 2011-2022 走看看