【发布时间】:2019-11-10 23:27:51
【问题描述】:
请帮助我理解。我有一个应用程序,我在其中将项目添加到数据库,然后将其显示在 ListView 上。几乎所有工作正常,但是当我通过上下文菜单删除项目时,顶部的第一个项目被删除。无论我选择哪个项目。
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, view, menuInfo);
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.delete_menu_item:
String itm_ps = itemView.getItemAtPosition(itemPos).toString();
ToDoDB.deleteData(itm_ps);
mAdapter.remove(itm_ps);
return true;
case R.id.quit_menu_item:
finish();
return true;
default:
return super.onContextItemSelected(menuItem);
}
}
及SQL查询代码:
public int deleteData(String value) {
SQLiteDatabase database = this.getWritableDatabase();
Cursor cursor = database.query(TABLE_NAME,null, null, null, null, null, null);
if (cursor.moveToFirst()) {
delete_result = database.delete(TABLE_NAME, KEY_ID + "=?", new String[]{value});
database.close();
}
return delete_result;
}
public Cursor viewData() {
SQLiteDatabase database = this.getReadableDatabase();
String query = "SELECT * FROM " + TABLE_NAME;
Cursor cursor = database.rawQuery(query, null);
return cursor;
}
【问题讨论】:
-
请仔细检查您的措辞“当我通过上下文菜单删除项目时,顶部的第一项被删除”。你的意思是“当我通过上下文菜单删除项目时,顶部的第一个项目被删除”?
-
是的。我想删除我在列表视图中选择的项目。从列表视图和数据库中删除项目。
标签: java android sqlite listview contextmenu