保持listview滑動的位置,一般用在增加listview子item中佈局的評論或者退出當前活動,再次進入繼續閱讀時。 利用ListView.getFirstVisiblePosition()來獲取當前可見的第一個Item的position,在滾動監聽中設置 其中存儲position和scroll ...
保持listview滑動的位置,一般用在增加listview子item中佈局的評論或者退出當前活動,再次進入繼續閱讀時。
利用ListView.getFirstVisiblePosition()來獲取當前可見的第一個Item的position,在滾動監聽中設置
@Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { this.firstVisibleItem = firstVisibleItem; this.lastVisibleItem = firstVisibleItem + visibleItemCount; this.totalItemCount = totalItemCount; } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { this.scrollState = scrollState; if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { position = this.getFirstVisiblePosition();//獲取在總的列表條數中的索引編號 View firstVisibleItem = this.getChildAt(0);//獲取在可視的第一個列表項 scrolledY = firstVisibleItem.getTop();//獲取第一個列表項相對於屏幕頂部的位置 } }
其中存儲position和scrolledY,併在關鍵位置調用
listView.setSelectionFromTop(position, scrolledY);(api 21)
調用上個方法就可以恢復listview 當前位置了。