Android - RecyclerView 项目在方向更改后不可见

Android - RecyclerView items aren't visible after orientation change

我在我的应用程序中使用 Conductor framework

该应用程序通常固定在 纵向 状态,但我有 2 个 Controllers 使用 ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR 并响应设备方向变化

所以当 A 启动时,它会立即启动 B 并在拍摄图像后显示摘要。

A 持有一个使用 FlexboxLayoutManagerRecyclerView (当我尝试用一​​个简单的 LinearLayoutManager 替换布局管理器时没有任何改变)

我有 3 个工作正常的流程:

  1. Portrait中持有的设备 -> A 已启动 -> B 已启动启动 -> 拍摄图像 -> B 关闭 -> 图像 Shown in A
  2. Landscape中持有的设备 -> A 已启动 -> B 已启动启动 -> 拍摄图像 -> B 关闭 -> 图像 Shown in A
  3. Portrait中持有的设备 -> A 已启动 -> B 已启动已启动 -> 设备方向 更改为横向 -> 已拍摄图像 -> 方向 更改为纵向 -> B 已关闭 -> 图片 Shown in A

但是这种情况失败了:

Portrait中持有的设备 -> A 已启动 -> B 已启动启动 -> 设备方向 更改为横向 -> 拍摄图像 -> B 关闭 -> 图像 NOT显示在A

在所有流程中,我看到 adapter 知道新项目,并且 getItemViewTypeonCreateViewHolderonBindViewHolder 被调用到正确的位置

失败的流程实际上是我作为用户最自然的流程:(

更新:

所以我现在查看 FlexboxLayoutManager 看看我是否可以轻松解决这个问题 - 我认为我的流程中实际上不需要回收站视图

似乎解决方案只是将 RecyclerViewandroid:layout_height="wrap_content" 更改为 android:layout_height="match_parent"

在上面的更新中,我说过它仍然不适用于 FlexboxLayoutManager,但问题出在我这边(代码注释太多)。

原代码不是我写的,不知道为什么要用wrap_content