当尝试通过在删除回收项目之前对其进行缓存来轻刷回收项目时,我正在尝试在快餐栏上实现撤消删除,并且如果单击撤消,则应从缓存中将项目添加到recyclerview中。
或者是否有更好的方法来实现这一目标。
这是我当前的代码
@Override
public void onSwiped(@NonNull final RecyclerView.ViewHolder viewHolder, int direction) {
viewModel = ViewModelProviders.of(Objects.requireNonNull(getActivity())).get(ViewModel.class);
viewModel.getAllAppointments().observe(getViewLifecycleOwner(), new Observer<List<Appointments>>() {
@Override
public void onChanged(List<Appointments> appointments) {
mAdapter.submitList(appointments);
}
});
Snackbar.make(Objects.requireNonNull(getView()), "Appointment deleted", Snackbar.LENGTH_LONG)
.setAction("UNDO", new View.OnClickListener() {
@Override
public void onClick(View view) {
//undo delete
}
})
.setActionTextColor(getResources().getColor(R.color.colorPrimaryDark))
.addCallback(new Snackbar.Callback(){
@Override
public void onDismissed(Snackbar snackbar, int event) {
super.onDismissed(snackbar, event);
if (event == DISMISS_EVENT_TIMEOUT || event == DISMISS_EVENT_SWIPE
|| event == DISMISS_EVENT_CONSECUTIVE || event == DISMISS_EVENT_MANUAL) {
viewModel.delete(mAdapter.getAppointAt(viewHolder.getAdapterPosition()));
}
}
})
.show();
}
答案 0 :(得分:1)
为此,您可以在onClick按钮上调用show快餐栏,因此在结束时间快餐栏上调用删除功能(从适配器,列表,数据库或数据源中删除),因此在此时间之前,可以暂时从适配器中删除项目仅适用于相似的动画(不能从列表中删除),并且如果用户单击“撤消”按钮从数据库或您的数据源中刷新列表