保持listview當前位置,listview當前位置
保持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 當前位置了。