因此,我目前正在支持以前由完全不同的开发人员小组开发的Android应用程序的开发工作。
作为我正在进行的支持工作的一部分,我们已将TargetSdkVersion从23升级到28,并相应地将所有依赖项和支持库以及appcompat库也升级了。
但是,随着recyclerview库的升级,我们已经开始注意到应用程序中为RecyclerView启用了无限滚动的实现的一个特殊问题。
观察到以下情况。
启动应用程序。访问托管RecyclerView的任何活动,片段或视图。
向上滚动。点击RecyclerView中显示的任何卡。将启动一个新的Activity或Fragment,其中包含该窃听卡内信息的详细信息。
返回,关闭现有的“详细信息”视图。
在v28中,RecyclerView只是从滚动开始处重新显示。 View不会自动滚动或执行任何操作,它仅显示第一项内容。
在v23中,RecyclerView保留了先前的状态,就像在点击Card并启动新的Activity,Fragment或View之前显示的子集那样,该显示没有任何更改或自动显示-滚动。
最糟糕的部分是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保留活动和窗口之间甚至状态变化之间的状态时的最新版本是什么?