旧的 recyclerview 旋转后仍保留为背景

BVt*_*Vtp 2 android android-recyclerview android-databinding

我正在使用带有 mmvm+livedata+数据绑定的 recyclerview。每次旋转后,我都可以看到旧的物品卡在后面作为背景。

我可以看到适配器具有正确数量的项目,并且实际上适配器仅显示和滚动最新数据。但在后台您可以看到旧列表。

代码非常标准和简单 - 带有数据绑定项的简单的 adatper/recyclervyew。

Leo*_*Aso 5

即使您没有发布任何代码(这确实没有帮助),我还是假设正在显示RecyclerViewFragment 内部,并且在 Activity 的 onCreate 中,您有以下行。

getSupportFragmentManager()
    .beginTransaction()
    .add(frameLayout, fragment)
    .commit();
Run Code Online (Sandbox Code Playgroud)

FragmentManager 的好处之一是,即使您旋转屏幕,它也会保留片段,这样内容就不会改变。savedInstanceState只要不为空,它就会执行此操作。

这意味着,如果您只是通过检查保存的状态来添加片段,它将被放置在管理器保存的片段上,这就是您正在做的事情。然而,利用此功能来维护状态需要一些编码工作,而且我无法帮助您,因为我不知道您的代码是什么样的。因此,最简单的解决方案就是更改addreplace.

getSupportFragmentManager()
    .beginTransaction()
    .replace(frameLayout, fragment)
    .commit();
Run Code Online (Sandbox Code Playgroud)

这告诉管理器“我不关心保存的状态。如果之前有一个片段,只需在添加这个片段之前将其删除即可。”