java - Sql lite 数据库项目未永久删除
问题描述
我使用 SQL lite 数据库制作了一个应用程序,它在数据库中添加了一些杂货项目,并且有用于更新、添加、查看和删除项目的选项。所有方法都可以正常工作,但只有在我关闭应用程序之前。我可以删除项目,但在重新启动应用程序时。他们没有被删除。
//数据库处理程序类中的DELETE方法
public void deleteGrocery(int id){
SQLiteDatabase db = this.getWritableDatabase();
db.delete(Constants.TABLE_NAME, Constants.KEY_ID + "=?", new String[]{String.valueOf(id)});
db.close();
}
适配器
public class rvAdapter {
List<Grocery> groceries;
public rvAdapter(Context context, List<Grocery> groceries) {
this.context = context;
this.groceries = groceries;
}
// on clicking delete button
public void onClick(View view) {
switch (view.getId()){
case R.id.deleteButton:
Grocery g2 = groceries.get(getAdapterPosition());
deleteItem(g2.getId());
break;
}
}
// Delete Item Method
public void deleteItem(final int id){
builder = new AlertDialog.Builder(context);
inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.confirmation_dialog, null);
Button dontDelete = view.findViewById(R.id.noButton);
Button deleteItem = view.findViewById(R.id.YesButton);
builder.setView(view);
dialog = builder.create();
dialog.show();
dontDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
deleteItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// delete item from db
DatabaseHandler db = new DatabaseHandler(context);
db.deleteGrocery(id);
groceries.remove(getAdapterPosition());
notifyItemRemoved(getAdapterPosition());
dialog.dismiss();
}
});
}
}
解决方案
推荐阅读
- python - 如何禁用 QWidget 中的调整大小指针?
- sql-server - 在生产环境中创建非聚集索引 - 如果需要太长时间,是否可以取消?
- c# - 如何在 Program (x86) 中创建文件
- javascript - 如何禁用函数和字符串文字中的函数的新行?
- typescript - 无法让 typescript 方法装饰器推断参数类型
- java - Vert.x Java 中异步共享映射的 remove 方法异常
- svg - 如何在 google_maps_flutter Flutter 插件中使用 SVG 标记?
- android - 修复了使用 Recyclerview 滚动时的背景图像
- javascript - 如何使用 javascript Canvas 添加悬停功能
- grafana - Grafana - 如何使用自定义命名空间配置 Cloudwatch 数据源?