【问题标题】:Android RecyclerView items empty when being swiped after switching appsAndroid RecyclerView项目在切换应用后被滑动时为空
【发布时间】:2020-09-25 07:42:22
【问题描述】:

首先,我看过类似的问题(例如,这个:Android RecyclerView ItemTouchHelper revert swipe and restore view holder)。这已经帮助了很多,直到我 - 或多或少地,不小心 - 注意到我的这个屏幕当前(希望是最终)问题。

让我们从设置开始:
我有一个带有 RecyclerView 的片段,里面装满了一些 CardView 项目(它有点花哨,但这就是现在重要的)。我还创建了一个带有 SimpleCallback 实现的 ItemTouchHelper(onMove() 中没有任何内容),以使滑动项目(右)成为可能。记录一下:我现在正在使用 API 27。 到目前为止,一切顺利。

我想要达到的目标:
我希望能够通过我的 SimpleCallback 实现的onSwiped() 方法滑动要通知的项目。另外,我确实希望这些项目消失、被删除或以其他方式从我的 RecyclerView 中的项目列表中删除。我只是想滑动它们,然后让它们回到原来的位置(是的,我知道这是假设滑动的项目被移除)。我在onSwiped() 方法中使用我的适配器的notifyItemChanged() 方法(也尝试使用notifyDataSetChanged())。

问题:
有趣的是,这很有效(主要归功于前面提到的问题)——直到我点击了“应用程序切换”按钮(不知道它是否真的有一个官方名称)并将应用程序发送到后台。一旦我再次将它放在前台并开始滑动,这些项目将不会(视觉上)返回。它们仍在列表中,如果我再次滚动或单击“应用切换”按钮,它们将再次正确显示(但不会在滑动时返回)。如果我返回一个屏幕并返回列表,则相同。
这让我觉得当我将应用程序发送到后台并恢复它时,发生了一些事情。与导航到该屏幕不同的东西(在这种情况下,一切都按预期工作) - 我认为这或多或少会产生相同的结果。有什么想法我可能会在这里忽略吗?

【问题讨论】:

    标签: android android-recyclerview swipe


    【解决方案1】:

    经过一番测试,终于找到了问题的根源:

    我通过 Fragment 的 onStart() 而不是 onViewCreated() 初始化了 RecyclerView 及其适配器。更改后,我得到了我想要的正确结果。

    经验教训:尽早设置 RecyclerView 的 Adapter,除非您想处理有时奇怪的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多