Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将隐藏值指定给listview项_Android_Android Listview - Fatal编程技术网

Android 将隐藏值指定给listview项

Android 将隐藏值指定给listview项,android,android-listview,Android,Android Listview,我有一个扩展ListView的活动。我用对sqlite数据库的查询结果填充列表。列表元素由开始时间、结束时间、客户端名称和状态组成。这些是我需要为每个列表项显示的4位信息 我的问题是:是否可以将隐藏元素分配给此ListView项 例如,我希望存储该ListView项的数据库行的_id字段,以便在单击该字段时,可以基于该数据库行的数据启动新活动 编辑 用于从光标填充列表的代码: String[] columns = new String[] {VisitsAdapter.KEY_CLIENT_FU

我有一个扩展ListView的活动。我用对sqlite数据库的查询结果填充列表。列表元素由开始时间、结束时间、客户端名称和状态组成。这些是我需要为每个列表项显示的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中做类似的事情吗?我能在XML布局中放置一个隐藏的ID字段吗?

你应该考虑创建一个java对象来收集所有这些信息。例如,您可以创建一个类似“ListItem”的类,每个项都有5个属性:
开始时间
结束时间
客户名称
地位 身份证件 (如果需要,还可以提供更多)


然后,您有两个选项,要么序列化对象以将整个对象放入数据库,要么保留现有的结构(我想),然后数据库的每一行都成为一个
ListItem
对象。然后,在查询数据库时,将它们全部放在ArrayList中,并扩展ArrayAdapter以生成自己的适配器。最后,在getView方法中,您可以调用
myListItem.getEnd\u Time
以及显示数据所需的所有方法,并且不要使用
getId
,当您需要对象时,您可以直接从适配器使用它。

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


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

如果需要在ListView的onItemClick(…)中不显示除_id以外的db列 你只要打电话:

mAdapter.getCursor();
mAdapter.getItemId();
然后可以获取所选列表项/行的任何非显示列

正如Janusz提到的,如果您只需要_id,只需拨打:

mAdapter.getCursor();
mAdapter.getItemId();

抱歉,赛菲,我对安卓系统还很陌生,我不太了解你的答案,我发布了相关代码来说明我的来源,当人们花时间向你解释问题,而你只是投票否决他们时,如何对待答案。我不敢相信。嗨,赛菲,我应该指出,不是我贬低了你的答案。我感谢你的回答,感谢你花时间研究我的问题。我不能说是谁降级了,因为我不知道。我的回答也是一样。好吧,请接受我的道歉。这是一种降低人们答案等级的奇怪方式……当你说我应该使用游标适配器时,你的意思是与我的示例代码中的SimpleCursorAdapter相反吗?谢谢你的回答。搜索列表项侦听器上的文档后,我发现onListItemClick会自动传递光标结果的rowID。(数据库中的_id列)。我完全错了(正如你所指出的),因为我假设我必须手动将它添加到列表项中,我没有意识到android会自动处理这个问题。谢谢,答案被接受。+1很好的解释……但是如果是SimpleAdapter,我怎么能达到同样的效果呢?“你应该试着从网络开发的思维框架中放松一点。”+1