【发布时间】:2020-06-17 06:25:04
【问题描述】:
我制作了一个笔记应用程序,一切正常。只是在 RecyclerView 列表中,当我选择一个或多个项目时,在菜单中我单击删除按钮,我的笔记没有被删除。虽然 delete 方法在另一个地方有效。 这是菜单中删除按钮的方法:
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
if (item.getItemId() == R.id.delete_selected) {
for (NotePad notePad : notes) {
if (selectedIds.contains(notePad.getId())) {
database = new Database(this);
database.deleteNote(notePad.getId());
}
}
adapter.notifyDataSetChanged();
return true;
}
return false;
}
我的数据库类中删除笔记的方法:
void deleteNote(long id) {
SQLiteDatabase database = this.getWritableDatabase();
database.delete(DATABASE_TABLE, ID + "=?", new String[] {String.valueOf(id)});
database.close();
}
我不知道如何将所选笔记的 id 与我的方法相关联,因为 deleteNote 方法接收长值但我的 selectedId 是 List。 提前致谢。
更新
我意识到我的代码可以找到,但它不会刷新列表并且还会从 ActionMode 返回到 Toolbar。我试过了 adapter.notifyDataSetChanged();
【问题讨论】:
-
onActionItemClicked函数在适配器中吗? -
@OhhhThatVarun 实际上我在 MainActivity 中使用了实现 ActionMode.Callback。
-
使用可以使用从适配器到活动/片段的回调。
-
那么你能帮我做吗?因为除了这部分,一切正常。
-
它删除笔记但不从适配器的内部列表中删除,在适配器中创建一个函数来提供笔记列表而不是通过适配器构造函数添加它,并在删除后调用它新列表的方法
标签: java android sqlite android-recyclerview