[Android算法] 精确记录和恢复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) {
                                // ListPos记录当前可见的List顶端的一行的位置
                               scrollPos = myList.getFirstVisiblePosition();
                        }
                        if (arrayList != null) {  
              View v=myList .getChildAt(0);
              scrollTop=(v==null)?0:v.getTop();
            }  
         }
        };


调用setAdapter之后恢复位置:

代码片段,双击复制
myList .setSelectionFromTop(scrollPos, scrollTop);



参考:http://stackoverflow.com/questions/3014089/scroll-to-a-position-in-a-listview 

路漫漫其修远兮 吾将上下而求索
原文地址:https://www.cnblogs.com/hudabing/p/3126988.html