【问题标题】:Getting the ID of the ListView Item when it is populated from a database从数据库中填充 ListView 项时获取它的 ID
【发布时间】:2011-10-31 16:39:07
【问题描述】:

我正在开发一个 android 应用程序,其中用户通过从列表视图中选择 CREATE NEW 来填写表单,并且表单存储在 SQLite 数据库中并出现在列表视图中。是这样的

仅开始 CREATE NEW 填写表单后ListView会是这样的

新建

FORM1

FORM2

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

现在我想做的是。 如果我单击 Form1,它应该打开供用户编辑等等。 我正在使用列表视图的位置来匹配记录的主 ID 并显示相应的记录

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

有没有更优雅的方法来获取从数据库中填充的 ListView 项的 ID?

【问题讨论】:

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


    【解决方案1】:

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

    当您删除记录时,您可以向ListView 发送信号以重新填充自己。使用当前和新数据(相同的数据减去从适配器删除的记录),如果这是您要查找的内容,您还可以向数据库发出信号(执行查询以删除该记录)以删除该记录。

    【讨论】:

      【解决方案2】:

      当一个item被点击时,你可以通过这种方式获取它的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.
              }
          });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-12
        • 2014-05-20
        • 2017-11-13
        • 2012-09-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多