这里以 ListView 为例说明,GridView 中同理。
首先,定义一个成员变量。
// 存储滑动位置状态然后,设置 ListView 的滑动监听事件,并重写 onScrollStateChanged 方法,当该方法被触发时记录下 ListView 的状态。
private Parcelable state;
// 记录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.onRestoreInstanceState(state);