首页 > 代码库 > [Android Pro] 精确记录和恢复ListView滑动位置

[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滑动位置