为什么在MVVM中从recylerView中删除几个项目在android中不起作用?

为什么在MVVM中从recylerView中删除几个项目在android中不起作用?,android,android-recyclerview,android-room,android-adapter,android-livedata,Android,Android Recyclerview,Android Room,Android Adapter,Android Livedata,我正在编写一个todo应用程序来了解更多关于android架构的信息。 我使用适配器实现了RecyclerView,它从ViewModel接收数据。现在,我正在尝试使用Snackbar中的“撤消”按钮实现滑动删除 一切正常,直到我试图同时从RecyclerView删除2项。只有一个项目被删除,第二个项目再次出现。问题只在snackbar未被排除时存在。我用 Snackbar.Callback.DISMISS_EVENT_ACTION 当用户在snackbar上按cancel时处理 类Folde

我正在编写一个todo应用程序来了解更多关于android架构的信息。 我使用适配器实现了RecyclerView,它从ViewModel接收数据。现在,我正在尝试使用Snackbar中的“撤消”按钮实现滑动删除

一切正常,直到我试图同时从RecyclerView删除2项。只有一个项目被删除,第二个项目再次出现。问题只在snackbar未被排除时存在。我用

Snackbar.Callback.DISMISS_EVENT_ACTION
当用户在snackbar上按cancel时处理

类FolderFragment
...
adapter=新的FolderListAdapter(getContext(),folderViewModel);
folderViewModel.getFolders().observe(这个适配器::setFolders);
...
公共空间{
Snackbar.make(getView(),
R.string.folder\u已删除\u消息,Snackbar.LENGTH\u SHORT)
.setAction(R.string.undo,v->
adapter.undodele())
.addCallback(新的Snackbar.Callback(){
@凌驾
公共无效onDismissed(Snackbar transientBottomBar,int事件){
if(event!=Snackbar.Callback.discouse\u event\u ACTION){
delete(adapter.getDeletedFolder());
}
}
})
.show();
公共类FolderListAdapter扩展了RecyclerView.Adapter ... void setFolders(列出文件夹){ this.folders=文件夹; notifyDataSetChanged(); } 公共空间和公共空间(内部位置){ mDeletedPosition=位置; mDeletedFolder=folders.get(位置); 文件夹。删除(位置); 已移除(位置)的项目; } 公共作废撤消删除(){ 文件夹。添加(mDeletedPosition,mDeletedFolder); notifyItemInserted(mDeletedPosition); } ...
公共类FolderViewModel扩展了AndroidViewModel
...
公共作废删除(文件夹){
folderRepository.delete(文件夹);
}
...
请参阅下面链接上的我的RecyclerView适配器行为

正在尝试注释适配器中从适配器列表中删除项的行-无效

在adapter-viewmodel中记录setList()不会更新LiveData,因为它在后台工作,但我不知道如何解决这个问题

计划