旋转后旧的recyclerview保留为背景

时间:2018-12-22 11:25:57

标签: android android-recyclerview android-databinding

我正在使用带有mmvm + livedata + databinding的recyclerview。 每次旋转后,我都能看到旧项目滞留在背景上。

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

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

1 个答案:

答案 0 :(得分:2)

即使您尚未发布任何代码(这确实无济于事),我还是要假设,您将RecyclerView显示在一个Fragment内,并将其显示在Activity的onCreate,您具有以下行。

getSupportFragmentManager()
    .beginTransaction()
    .add(frameLayout, fragment)
    .commit();

FragmentManager的优点之一是,即使在旋转屏幕后,它也可以保留片段,以使内容不会改变。只要savedInstanceState不为空,就会执行此操作。

这意味着,如果仅在检查已保存状态的情况下添加片段,它将被放置在管理器保存的片段上,这就是您正在做的事情。但是,利用此功能维护状态需要花费一些编码工作,并且由于我不知道您的代码是什么样,所以我无法为您提供帮助。因此,最简单的解决方案是将add更改为replace

getSupportFragmentManager()
    .beginTransaction()
    .replace(frameLayout, fragment)
    .commit();

这告诉管理员“我不在乎保存的状态。如果以前有片段,只需在添加该片段之前将其删除即可。”