【发布时间】:2016-05-15 06:20:15
【问题描述】:
我有一个 RecyclerView。当我单击删除按钮时,它会从 RecyclerView 中删除一个项目,但是当我重新启动应用程序时,该项目又回来了。这是我的数据库类中的函数:
public boolean deleteList(long rowId) {
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
这是我的带有删除按钮的适配器类:
@Override
public void onBindViewHolder(RecyclerViewViewHolder viewHolder, final int position) {
viewHolder.name.setText(list.get(position).name);
viewHolder.date.setText(list.get(position).date);
viewHolder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
RecyclerViewListSchema item = list.get(position);
SQLiteDatabaseAdapter database = new SQLiteDatabaseAdapter(view.getContext());
database.open();
boolean deleteList = database.deleteList((long) position);
list.remove(position);
notifyItemRemoved(position);
database.close();
}
});
}
更新:
我在deleteList 函数中添加了一个提交函数,如下所示:
public boolean deleteList(long rowId) {
db.beginTransaction();
try {
db.setTransactionSuccessful();
}
catch (Exception e) {
Log.v("Commit", "Error: + " + e);
}
finally {
db.endTransaction();
}
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
我也没有在 Android Monitor 中得到任何东西。 我该如何解决这个问题?
【问题讨论】:
-
列表是从数据库中填充的吗?你错过了提交吗?
-
@dumb_terminal 是的。该列表是从数据库中填充的。
-
那么该项目肯定没有从数据库中删除。这里可以存在两件事。 1.删除逻辑不成功。 2. 删除成功但修改没有提交到db。
-
@dumb_terminal 如何添加提交?
-
db.beginTransaction();尝试 { db.setTransactionSuccessful(); } catch { //数据库事务之间的错误 } finally { db.endTransaction(); }
标签: android sqlite android-sqlite android-recyclerview