delete-row - 从 sqlite 数据库中删除单行
问题描述
我正在尝试通过 listview 上的 longPress 从数据库中删除该项目。当我单击删除时,该项目将从列表视图中删除并显示 Toast 消息已删除,但如果我移动到其他活动并返回,该项目仍会在我的列表视图中退出。如何从数据库中删除项目
在这里,这是我的代码
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(final AdapterView<?> arg0, View arg1, final int arg2, final long arg3) {
final AlertDialog.Builder delete = new AlertDialog.Builder(AddCount.this);
delete.setIcon(R.drawable.ic_baseline_delete_24);
delete.setTitle("Are you sure");
delete.setMessage("Do you want to delete this item?");
delete.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
DbHandler db = new DbHandler(getApplicationContext());
db.deleteData(arg2 + "");
userList.remove(arg2);
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), "Deleted", Toast.LENGTH_SHORT).show();
}
});
delete.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
delete.show();
return true;
}
});
Dbhandler.java(SQLite 数据库)
public void deleteData(String id)
{
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_Inputs, "id = ? ", new String[]{id});
db.close();
}
解决方案
https://developer.android.com/reference/android/widget/AdapterView.OnItemLongClickListener
在这个链接中,他们定义了如下方法:onItemLongClick(AdapterView<?> parent, View view, int position, long id)。
您的定义:public boolean onItemLongClick(final AdapterView<?> arg0, View arg1, final int arg2, final long arg3)。
您使用了“final int arg2”。由于使用 final 关键字定义的参数无法重新分配,这可能会导致问题。尝试在没有final 关键字的情况下定义您的方法,看看它是否有效。
推荐阅读
- python - Django 2 个字段之一不能为空
- python - 为什么 Python Selenium 经常导致页面未加载?
- java - 当我使用 junit Cucumber 运行 TestRunner 类时,我得到 0 Scenarios 0 Steps 0m0.000s
- php - PrestaShop PHP 复制文件
- logging - 使用酒厂管理日志文件
- python - 获取多索引熊猫数据框的元素平均值
- openlayers-5 - ol-cesium:有没有办法在 ol-cesium 中选择一个特征并将其追溯到 openlayers 特征?
- git - 结帐后詹金斯失败,没有错误
- excel - Excel VBA - 从表格主体范围添加数据标签
- jquery - 视频流显示在 Micorsoft Edge 中不起作用