【发布时间】: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