将隐藏值分配给一个listview项目

我有一个扩展ListView的活动。 我用查询的结果填充我的列表到sqlite数据库。 列表元素由start_time,end_time,client_name和status组成。 这些是我需要为每个列表项目显示的信息的4位。

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

例如,我想存储该ListView项目的数据库行的_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_item是我的列表项目的XML。 我来自PHP / HTML背景,所以我通常在这里做的是有一个隐藏的字段来保存我的_id值,我可以访问一旦列表项被点击。 我可以在android中做类似的东西吗? 我可以把一个隐藏的_id字段在我的XML布局?

Solutions Collecting From Web of "将隐藏值分配给一个listview项目"

你应该尝试从Web开发的思路中放松一下。 你不需要在视图的隐藏字段中存储这样的东西。 这会混淆你的数据与你的用户界面,并造成大量的混淆和不必要的视图对象。

如果你正在使用sqlite数据库来存储你的值,你应该使用CursorAdapter来pipe理你的列表项。 CursorAdapter存储从数据库获得的结果,并pipe理数据如何显示给用户。 如果您在ListView上注册了onItemClickListener ,则侦听器将收到适配器以及在适配器中单击其单元格的数据项的位置。 现在,您可以使用getItem来检索指向用于创buildlistitem的数据库结果的光标。 现在,您可以从数据库结果中获取未向用户显示的id或所有其他值,并将其附加到意图以启动下一个活动。

你应该考虑创build一个java对象来收集所有这些信息。 例如,你可以创build一个像“ListItem”类,每个项目将有5个属性:
开始时间
时间结束
客户名称
状态ID(如果需要,还可以更多)

然后,你有两个select,要么你序列化你的对象将整个对象在数据库中,或者你保留你已经有的结构(我想),并且你的数据库的每一行成为一个ListItem对象。 然后,当你查询你的数据库时,你把它们全部放在一个ArrayList中,然后扩展ArrayAdapter来创build你自己的适配器。 最后,在getView方法中,调用myListItem.getEnd_Time和所有需要显示数据的getId ,而不使用getId ,当需要该对象时,可以直接使用getId

如果你需要非_id的显示数据库列,你ListView的onItemClick(…)只需要调用:

 mAdapter.getCursor(); 

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

正如Janusz所提到的,如果你只需要_id,只需调用:

 mAdapter.getItemId();