回收器查看还原项目并管理轮换后的分页



我想知道是否有办法在旋转后恢复我的结果列表而不保留片段。

基本上,我有一个片段,它通过演示器调用一些api(使用RxJava和Retrofit)。我添加了分页,因此只有在需要向下滚动更多数据时才能拨打电话。

我处于以下情况: - 我向下滚动列表以便从网络调用第二页 - 旋转屏幕

在这种情况下,我需要的是显示从第 1 页和第 2 页开始的所有项目,然后滚动到正确的位置(为此,我可以使用 LayoutManager 的 onSaveInstanceState)。

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FwApplication.component(getActivity()).inject(this);
    if (savedInstanceState != null) {
        mRxRunning = savedInstanceState.getBoolean(EXTRA_RX);
        mQuery = savedInstanceState.getString(QUERY_ARG);
        mCurrentPage = savedInstanceState.getInt(CURRENT_PAGE);
    } 
}
@Override
public void onSaveInstanceState(Bundle outState) {
    outState.putString(QUERY_ARG, mQuery);
    outState.putInt(CURRENT_PAGE, mCurrentPage);
    outState.putParcelable(LAYOUT_STATE, mRecyclerView.getLayoutManager().onSaveInstanceState());
    super.onSaveInstanceState(outState);
}
@Override
public void onResume() {
    super.onResume();
    mPresenter.onResume(mRxRunning, mCurrentPage);
}

有没有办法在不调用 setRetainInstance 的情况下保存项目?此外,我会避免调用 api 以取回所有项目。

这些项目是 POJO,因此它不会是简单字符串的列表。

尝试编辑清单文件。添加此行以阻止活动:

android:configChanges="keyboardHidden|orientation|screenSize"> 

它将防止活动在此类事件上重新启动(特别是在方向更改时)

最新更新