恢复片段中的 RecyclerView 滚动位置
Restoring RecyclerView scroll position within a Fragment
关于这个的问题太多了,但我尝试的方法似乎都不起作用。我想要做的就是恢复嵌套在片段中的 RecyclerView 的 "scroll position"。例如,当打开一个新片段时(使用
.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 文件中。
当我打开一个新的 fragment 然后返回到这个 fragment 时,RecyclerView 被设置到顶部而不是之前的滚动位置。
感谢任何帮助,如果需要,我很乐意提供更多信息!干杯!
我在更改选项卡时通过 "hiding" 片段解决了我的问题。
This link 很有帮助!
这样片段就不会被破坏,生命周期也不会重新开始。
关于这个的问题太多了,但我尝试的方法似乎都不起作用。我想要做的就是恢复嵌套在片段中的 RecyclerView 的 "scroll position"。例如,当打开一个新片段时(使用 .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 文件中。
当我打开一个新的 fragment 然后返回到这个 fragment 时,RecyclerView 被设置到顶部而不是之前的滚动位置。
感谢任何帮助,如果需要,我很乐意提供更多信息!干杯!
我在更改选项卡时通过 "hiding" 片段解决了我的问题。 This link 很有帮助! 这样片段就不会被破坏,生命周期也不会重新开始。