我希望 RecyclerView 在设备旋转时保留其位置。
我有 4 个类(2 个 Activity 和 2 个 ViewModel),名称为 MainActivity , FavouritesActivity 。加号MainViewModel , FavouritesViewModel延伸AndroidViewModel 。 FavouriteAvtivity 和 FavouriteViewModel 的所有功能都工作得很好。同时,其他两个以相同的方式实现,但是当我旋转设备时,列表的滚动位置会重置,并且我实际上已经尝试了有关在 onSaveInstanceState() 和 onRestoreInstanceState() 中保存列表状态的所有内容。
这是我在 GitHub 上的应用程序存储库:PopularMovies
最佳答案
我发现这个问题导致了为什么它只发生在 MainActivity 上,即使实现是相同的。问题在于您的布局 movie_list_item,您必须指定恒定的高度,否则布局会重新测量并在设备旋转时向上滚动列表。为了防止这种情况,请使用以下修改后的布局。
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/iv_movie_thumbnail"
android:layout_width="184dp"
android:layout_height="180dp" // don't use wrap_content, can use any height you want but make it that fix
android:contentDescription="@string/movie_thumbnail"/>
关于java - ViewModel 不缓存 RecyclerView 的数据并且保存 ListState 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51802260/