我正在使用带有mmvm + livedata + databinding的recyclerview。 每次旋转后,我都能看到旧项目滞留在背景上。
我可以看到适配器具有正确数量的项目,实际上适配器仅显示和滚动最新数据。但是,在后台您可以看到旧列表。
代码是非常标准和简单的-具有数据绑定项的简单的adatper / recyclervyew。
答案 0 :(得分:2)
即使您尚未发布任何代码(这确实无济于事),我还是要假设,您将RecyclerView
显示在一个Fragment内,并将其显示在Activity的onCreate,您具有以下行。
getSupportFragmentManager()
.beginTransaction()
.add(frameLayout, fragment)
.commit();
FragmentManager的优点之一是,即使在旋转屏幕后,它也可以保留片段,以使内容不会改变。只要savedInstanceState
不为空,就会执行此操作。
这意味着,如果仅在检查已保存状态的情况下添加片段,它将被放置在管理器保存的片段上,这就是您正在做的事情。但是,利用此功能维护状态需要花费一些编码工作,并且由于我不知道您的代码是什么样,所以我无法为您提供帮助。因此,最简单的解决方案是将add
更改为replace
。
getSupportFragmentManager()
.beginTransaction()
.replace(frameLayout, fragment)
.commit();
这告诉管理员“我不在乎保存的状态。如果以前有片段,只需在添加该片段之前将其删除即可。”