java - ViewModel 不缓存 RecyclerView 的数据并且保存 ListState 不起作用

标签 java android android-recyclerview retrofit2 android-architecture-components

我希望 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/

相关文章:

java - 意外的 Full GC(符合人体工程学)

java - 我在哪里可以找到 android studio 中的数据库和表记录?

android - 检查单选按钮回收

java - FirebaseRecyclerAdapter 无法工作或显示任何数据

java - 检查一个数组是否与java中的另一个数组相反

java - 将 QRCodeWriter 的 BitMatrix 输出转换为字节数组?

java - 在java中将对象声明为final

java - 定时器不允许用户编辑

android - 错误 "cannot find -lrt"为 Android 构建 Boost

android - 使用数据列表或使用 RecyclerView 为对象生成 View ?