正如标题所说,我有一个列表,长按可以选择从数据库中删除列表中的项目。当我运行代码时,没有任何反应,我得到一个警告“窗口已经聚焦,忽略焦点增益”。 这是代码片段 -
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.remove:
System.out.println(sindex);
db.open();
db.deleteIP(info.position); //deleteIP is the method to delete item from list
db.close();
return true;
default:
return super.onContextItemSelected(item);
}
}
deleteIP() -
public boolean deleteIP(long _id)
{
return db.delete(DATABASE_TABLE, KEY_ID + "=" + _id, null) > 0;
}
db.deleteIP(info.position)
是否会产生问题?
我又尝了一个选择。我已经在sindex中存储了列表项的索引。所以调用db.deleteIP(sindex)
应该有效。但它没有!
请帮忙! 感谢。
答案 0 :(得分:0)
您正在引用info.position
,然后尝试将其用作主键,这可能不正确。如果您使用CursorAdapter
,则info.id
将包含_ID
中的Cursor
值。