我目前正在学习记事本教程,练习 2完成了删除笔记的代码。但是,我有点困惑这是如何工作的。以下是相关代码:
public boolean onContextItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case DELETE_ID:
AdapterContextMenuInfo info =
(AdapterContextMenuInfo) item.getMenuInfo();
mDbHelper.deleteNote(info.id);
fillData();
return true;
}
return super.onContextItemSelected(item);
}
练习指出:“这个 [AdapterContextMenuInfo] 对象的 id 字段告诉我们项目在 ListView 中的位置。然后我们将其传递给 NotesDbAdapter 的 deleteNote() 方法,便笺被删除。”
查看数据库定义,数据库中新添加的行/注释的 id 字段是由自动递增的数字自动生成的。因此,如果我们有 4 个 id 为 1,2,3,4 的音符(不确定它是否被零索引!)并删除第二个音符,我们不应该留下 id 1,3,4 吗?这意味着尝试删除最后一个音符(现在是列表中的第 3 个,但仍具有其原始第 4 个索引)应该删除索引 = 3 的行?或者当一行被删除时,这些行是否会自动重新索引?
最后,您可以查看/浏览手机上的数据库以查找应用程序吗?