android - 使用contextmenu从数据库中删除项目

时间:2011-08-17 11:25:01

标签: android database contextmenu

正如标题所说,我有一个列表,长按可以选择从数据库中删除列表中的项目。当我运行代码时,没有任何反应,我得到一个警告“窗口已经聚焦,忽略焦点增益”。 这是代码片段 -

@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)应该有效。但它没有!

请帮忙! 感谢。

1 个答案:

答案 0 :(得分:0)

您正在引用info.position,然后尝试将其用作主键,这可能不正确。如果您使用CursorAdapter,则info.id将包含_ID中的Cursor值。