1. 程式人生 > >Android--記錄和恢復listView滾動位置的3種方法

Android--記錄和恢復listView滾動位置的3種方法

有時在view切換時,需要恢復listView之前滾動到的位置,常用的三種方法如下:

1、記錄listView滾動到的位置的座標,然後利用listView.scrollTo精確的進行恢復

listView.setOnScrollListener(new OnScrollListener() {
                     @Override
          
          public void onScrollStateChanged(AbsListView view, int scrollState) {
                          
               
             if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
                                   if (currentMenuInfo!=null)   
             {
                                          scrolledX = listView.getScrollX();
                                          scrolledY = listView.getScrollY();
                                   }
                            }
                     }

                     @Override
                     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
                          
                     }
              });
在恢復位置時呼叫:
listView.scrollTo(scrolledX, scrolledY);

 

2、記錄listView顯示在螢幕上的第一個item的位置,然後利用listView.setSelection恢復

listView.setOnScrollListener(new OnScrollListener() {

            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
                    position = listView.getFirstVisiblePosition();
                }