recyclerview精确恢复到上次浏览位置
时间: 2023-12-24 19:03:39 浏览: 42
要让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就能够恢复到上次浏览的位置了。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)