小编Har*_*dra的帖子

如何在屏幕旋转时保持 recyclerView 的滚动位置

我正在用 gridlayoutManager 填充 recyclerView。现在我想在屏幕旋转上保存滚动位置。

我尝试使用 onSaveInstanceState 和 onRestoreInstanceState() 这样做,如本文所示:

如何使用 RecyclerView.State 保存 RecyclerView 的滚动位置?

下面是我的代码:

@Override
protected void onSaveInstanceState(Bundle outState) {
    Log.e(TAG, "onSaveInstanceState");
    super.onSaveInstanceState(outState);
    outState.putParcelable(KEY_INSTANCE_STATE_RV_POSITION, 
    gridLayoutManager.onSaveInstanceState());
 }


@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {

    Log.e(TAG, "onRestoreInstanceState");
    super.onRestoreInstanceState(savedInstanceState);
    if (savedInstanceState!= null){
        Parcelable savedState = 
    savedInstanceState.getParcelable(KEY_INSTANCE_STATE_RV_POSITION);

        movieAdapter.addAll(movieItemList);
        if (savedState!= null){
            gridLayoutManager.onRestoreInstanceState(savedState);
        }
    }
}


//this is my movieAdapter.addAll() method 

public void addAll(List<MovieItem>items){

    movieItems = items;
}


//This is the method to get lists of movies from ViewModel Class

private void loadFavMovies() {
    FavViewModel …
Run Code Online (Sandbox Code Playgroud)

android gridlayoutmanager android-recyclerview

3
推荐指数
3
解决办法
3913
查看次数