GridLayoutManager是否损坏并且没有在RecyclerView-v7:28.0.0中保留状态? -什么改变了?

时间:2018-11-28 20:53:18

标签: android android-recyclerview recyclerview-layout android-9.0-pie

因此,我目前正在支持以前由完全不同的开发人员小组开发的Android应用程序的开发工作。

作为我正在进行的支持工作的一部分,我们已将TargetSdkVersion从23升级到28,并相应地将所有依赖项和支持库以及appcompat库也升级了。

但是,随着recyclerview库的升级,我们已经开始注意到应用程序中为RecyclerView启用了无限滚动的实现的一个特殊问题。

观察到以下情况。

  1. 启动应用程序。访问托管RecyclerView的任何活动,片段或视图。

  2. 向上滚动。点击RecyclerView中显示的任何卡。将启动一个新的Activity或Fragment,其中包含该窃听卡内信息的详细信息。

  3. 返回,关闭现有的“详细信息”视图。

  4. 在v28中,RecyclerView只是从滚动开始处重新显示。 View不会自动滚动或执行任何操作,它仅显示第一项内容。

  5. 在v23中,RecyclerView保留了先前的状态,就像在点击Card并启动新的Activity,Fragment或View之前显示的子集那样,该显示没有任何更改或自动显示-滚动。

  6. 最糟糕的部分是v28,没有任何东西可以保留RecyclerView的状态。例如,在onPause()中调用LayoutManager.onSaveInstanceState(),将其存储为Parcelable,然后在onResume()中将其应用为LayoutManager.onRestoreInstanceState(Parcelable state)将不起作用。否则,请使用LayoutManager.findFirstVisibleItemPosition(),然后在onPause()中计算firstVisibleItemPositionOffset,然后在onResume()的LayoutManager.smoothScrollWithOffset中同时使用它们,这些策略似乎都不起作用。

GridLayoutManager是否损坏并且在RecyclerView-v7:28.0.0中不保留状态?

RecyclerView保留活动和窗口之间甚至状态变化之间的状态时的最新版本是什么?

0 个答案:

没有答案