代码之家  ›  专栏  ›  技术社区  ›  Kevin Bradshaw

为listview项指定隐藏值

  •  9
  • Kevin Bradshaw  · 技术社区  · 15 年前

    我的问题是:是否可以将隐藏元素分配给此ListView项?

    例如,我想为该ListView项存储数据库行的\u id字段,以便在单击它时可以基于该数据库行的数据启动一个新活动。

    编辑

    我用来从光标填充列表的代码:

    String[] columns = new String[] {VisitsAdapter.KEY_CLIENT_FULL_NAME, VisitsAdapter.KEY_STATUS,VisitsAdapter.KEY_CLIENT_START_TIME, VisitsAdapter.KEY_CLIENT_END_TIME};
    
    // the XML defined views which the data will be bound to
    int[] to = new int[] { R.id.name_entry,R.id.number_entry,R.id.start_time_display,R.id.end_time_display  };
    
    SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(HomeScreen.this, R.layout.list_element, cur, columns, to);
    

    其中R。layout.list\u项是我的列表项的XML。我来自PHP/HTML背景,所以我通常会在这里做的是有一个隐藏字段来保存我的id值,我可以在单击列表项后访问它。我可以在android中做类似的事情吗?我可以在xml布局中放置一个隐藏的\u id字段吗?

    3 回复  |  直到 14 年前
        1
  •  19
  •   Janusz Daniel Rindt    15 年前

    你应该试着把自己从web开发的思维框架中解放出来一点。不需要在视图中的隐藏字段中存储id这样的内容。这会将数据与用户界面混合,并创建大量混乱和不必要的视图对象。

    如果使用sqlite数据库来存储值,那么应该使用 CursorAdapter 管理列表项。CursorAdapter存储从数据库获得的结果,并管理如何向用户显示数据。如果你注册了 onItemClickListener ListView 侦听器将接收适配器和在适配器中单击其单元格的数据项的位置。现在你可以用 getItem

        2
  •  1
  •   Sephy    15 年前

    您应该考虑创建一个java对象来收集所有这些信息。例如,您可以创建一个类似“ListItem”的类,每个项都有5个属性:
    开始时间
    结束时间

    身份证件

    ListItem 对象。然后,在查询数据库时,将它们全部放入ArrayList中,并扩展ArrayAdapter以生成自己的适配器。最后,在getView方法中,调用 myListItem.getEnd_Time 以及显示数据所需的所有方法,而只是不使用 getId ,当您需要对象时,可以直接从适配器使用它。

        3
  •  0
  •   macio.Jun    12 年前

    你只要打电话:

    mAdapter.getCursor();
    

    然后可以获得所选列表项/行的任何非显示列。

    正如Janusz所提到的,如果你只需要身份证,只要打电话:

    mAdapter.getItemId();