【发布时间】:2015-09-12 10:46:37
【问题描述】:
我在 android 中使用 Snackbar,并且我已经实现了一个操作,以便用户可以撤消该操作(该操作正在清除列表视图中的所有项目)。删除项目并将其添加回列表视图已经完成并且正在工作很好。
我的问题是,项目存储在 sqlite 数据库中,如何从表中删除项目? (我怎么知道用户没有点击撤消按钮,这样我就可以从数据库中彻底删除数据了)。
这是OnOptionsItemSelected()
里面的代码case R.id.action_clear:
final List<Word> temp = new ArrayList<Word>(data);
data.clear();
adapter.notifyDataSetChanged();
View view = findViewById(R.id.layoutFavWords);
Snackbar.make(view,"Deleted Saved Selection.", Snackbar.LENGTH_LONG).
setAction("Undo", new OnClickListener() {
@Override
public void onClick(View v) {
for(Word word:temp)
data.add(word);
adapter.notifyDataSetChanged();
}
}).show();
break;
所以如果用户在snackbar的可见期间没有点击撤消按钮,那么我需要从数据库中永久删除数据。
有什么解决办法吗?
【问题讨论】:
-
立即删除它们,如果按下撤消则重新插入?
-
是的,这是另一种选择。但是有什么办法可以实现我想要做的吗?仅当用户未单击撤消按钮时才删除
-
imo 已经足够好了。您假设用户知道他想要什么,但他可以改变主意(撤消)。或者您可能想要一个
confirm-like小吃店。查看文档,它看起来不过是 Toast -
如果没有办法实现它,我必须这样做。感谢回复
-
如果用户删除数据然后杀死你的应用会发生什么?记录会留在数据库中,这是不对的,删除按钮应该立即删除记录,您需要保存此记录的临时用于UNDO,在选择UNDO时您需要再次将其插入数据库并重新加载列表。
标签: java android android-support-library android-design-library snackbar