我有一个扩展 ListView 的 Activity 。我用对 sqlite 数据库的查询结果填充我的列表。列表元素由 start_time、end_time、client_name 和 status 组成。这些是我需要为每个列表项显示的信息的 4 位。
我的问题是:我可以将隐藏元素分配给这个 ListView 项目吗?
例如,我想存储该 ListView 项的数据库行的 _id 字段,这样当我单击它时,我可以根据该数据库行的数据启动一个新 Activity 。
编辑
我用来从光标填充列表的代码:
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 字段吗?
最佳答案
你应该试着让自己从网络开发的思维框架中放松一点。没有必要在 View 的隐藏字段中存储诸如 id 之类的东西。这会将您的数据与您的用户界面混合在一起,并造成很多困惑和不必要的 View 对象。
如果您使用 sqlite 数据库来存储您的值,您应该使用 CursorAdapter管理您的列表项。 CursorAdapter 存储您从数据库获得的结果并管理数据如何显示给用户。如果您随后注册一个 onItemClickListener在你的 ListView监听器将接收到适配器以及在适配器中单击其单元格的数据项的位置。现在你可以使用 getItem检索指向用于创建列表项的数据库结果的游标。现在,您可以从数据库结果中获取未向用户显示的 ID 或所有其他值,并将其附加到启动下一个 Activity 的 Intent 。
关于android - 将隐藏值分配给 ListView 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3492513/