恢复片段中的RecyclerView滚动位置

时间:2018-11-10 06:27:43

标签: android-fragments android-recyclerview maintainscrollpositionon

关于此,还有很多问题,但是我尝试的任何方法似乎都行不通。我要做的就是还原嵌套在Fragment中的RecyclerView的“滚动位置”。例如,当打开一个新片段时(使用 .replace())然后关闭,原始片段显示的屏幕与打开新片段之前的屏幕相同,即。 RecyclerView的滚动位置已恢复;但是,这不是正在发生的事情。我正在使用底部导航打开片段。下面是我正在使用的方法,我认为这是可行的,因为它是该问题的最常见答案。

private Parcelable recLayoutState;
private Bundle recBundle;
private static String LIST_STATE = "LIST_STATE";

@Override
public void onPause(){
    super.onPause();

    recLayoutState = homeRecyclerLayoutManager.onSaveInstanceState();
    recBundle = new Bundle();
    recBundle.putParcelable(LIST_STATE,recLayoutState);
}

@Override
public void onResume(){
    super.onResume();

    if (recBundle != null){
        recLayoutState = recBundle.getParcelable(LIST_STATE);
        homeRecyclerLayoutManager.onRestoreInstanceState(recLayoutState);
    }


}

此代码在fragment.java文件中。

当我打开一个新片段然后返回到该片段时,RecyclerView设置为顶部而不是上一个滚动位置。

感谢任何帮助,如果需要,我很乐意提供更多信息!干杯!

1 个答案:

答案 0 :(得分:0)

我在更改标签时通过“隐藏”片段解决了我的问题。 This链接非常有帮助! 这样片段不会被破坏,生命周期也不会重启。