recyclerview精确恢复到上次浏览位置
时间: 2023-12-24 09:03:39 浏览: 85
RefreshRecycleView
要让RecyclerView精确恢复到上次浏览位置,可以通过保存RecyclerView的滚动位置并在恢复时重新设置滚动位置来实现。具体步骤如下:
1. 在Activity或Fragment的onSaveInstanceState方法中保存RecyclerView的滚动位置,可以使用LinearLayoutManager的findFirstVisibleItemPosition方法获取第一个可见item的位置。
2. 在Activity或Fragment的onRestoreInstanceState方法中恢复RecyclerView的滚动位置,可以使用LinearLayoutManager的scrollToPositionWithOffset方法将RecyclerView滚动到指定的位置。
示例代码如下:
```java
public class MainActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private LinearLayoutManager mLayoutManager;
private int mScrollPosition;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRecyclerView = findViewById(R.id.recycler_view);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
if (savedInstanceState != null) {
mScrollPosition = savedInstanceState.getInt("scroll_position");
}
}
@Override
protected void onResume() {
super.onResume();
mLayoutManager.scrollToPositionWithOffset(mScrollPosition, 0);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("scroll_position", mLayoutManager.findFirstVisibleItemPosition());
}
}
```
这样,当Activity或Fragment被销毁后重新创建时,RecyclerView就能够恢复到上次浏览的位置了。
阅读全文