删除行功能如何在Android记事本教程中工作?

时间:2011-07-02 23:13:35

标签: android notepad

我目前正在处理记事本教程,exercise 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个索引)应该删除index = 3的行?或者,当行被删除时,行是否会自动重新编制索引?

最后,您可以在手机上查看/浏览数据库中的应用程序吗?

1 个答案:

答案 0 :(得分:1)

在我看来,在编写示例文本时,有人犯了一个小错误。如果您看到AdapterContexteMenuInfoid字段的文档,则表明它返回元素的行ID 。这是由您Adapter的{​​{1}}方法提供的。

而且,是的,您可以阅读手机的数据库。您可以从命令行使用此命令连接到模拟器shell(如果您正在使用模拟器):

getId()

然后进入应用程序的文件夹(在/data/data/com.yourpackage中)。应该有一个 adb -e shell 文件夹。在shell中,键入databases。然后,您可以执行任何受支持的数据库操作(选择,更新等)。检查this page,它甚至有关于sqlite3的部分。