从数据库中填充ListView项时获取它的ID

时间:2011-08-21 18:20:05

标签: java android sqlite android-layout android-emulator

我正在开发一个Android应用程序,其中用户通过从列表视图中选择CREATE NEW来填充表单,并且表单存储在SQLite数据库中并显示在listview上。就像这样

仅启动CREATE NEW 填写表单后,ListView就像

创建新

FORM1

FORM2

每个表单引用数据库表中的记录

现在我想做的是。 如果我单击Form1,它应该打开供用户编辑,依此类推。 我使用listview的位置来匹配记录的主要ID并显示相应的记录

但是当我删除记录时,整个问题就出现了

从数据库填充ListView项目时,是否有更优雅的方法来获取它?

2 个答案:

答案 0 :(得分:1)

单击某个项目时,您可以通过以下方式获取其ID: 将OnItemClickListener设置为listView,然后获取id:

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> av, View v, int pos, long id) 
        {
            // Do whatever you want. "id" as the id in the db.
        }
    });

答案 1 :(得分:0)

如果选择数据库中的所有记录,我的意思是没有任何条件,那么查询中表单的位置将与数据库中的位置相同,但如果查询中有条件,则只能获得该位置你的条件查询中的表单。你已经提到了点击,所以在setOnItemClickListener()你有一个int位置变量来指定ListView中的项目位置,有时候你有半个可见项目的情况,那么你可以应用公式{{因此,您可以避免使用位置加扰数据。同样在positon = position - listView.getFirstVisiblePosition();中,您也可以使用相同的getView()变量。我希望这是合理的。

当您删除记录时,您可以发信号通知int position重新填充自己。使用当前和新数据(相同的数据减去已删除的记录形成适配器),您也可以发信号(执行查询以删除该记录)数据库以删除记录,如果这是您正在寻找的。