這裏以 ListView 爲例說明,GridView 中同理。
首先,定義一個成員變量。
// 存儲滑動位置狀態
private Parcelable state;
然後,設置 ListView 的滑動監聽事件,並重寫 onScrollStateChanged 方法,當該方法被觸發時記錄下 ListView 的狀態。
// 記錄listview滑動位置
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
state = listView.onSaveInstanceState();
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
最後,調用如下方法恢復 ListView 狀態。
// 恢復位置狀態
listView.onRestoreInstanceState(state);