Android 记录和恢复ListView和GridView的滑动位置

时间:2022-12-12 06:24:17

这里以 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);