我有一个ListView,它显示来自数据库的人员信息。是否可以在listview中为每个项添加像personid这样的特定ID,以便我可以在单击列表视图项时将该ID传递给另一个页面。我正在为ListView使用SimpleAdapter。 我看到了一个链接here。但这并不能完全满足我的要求。 有没有办法直接设置Id,就像我们在SimpleAdapter中设置的hashmaps列表中所做的那样
答案 0 :(得分:2)
使用SimpleAdapter时,为其提供了MapsList。 你应该做的是将你的personid作为一个条目包含在你的Map中,你不必将它绑定到你行中的任何显示元素,所以它不必显示。
例如,如果您的地图名为rowMap,并且该ID名为personId
rowMap.put("person_id", personId);
adapterList.add(rowMap);
然后,当您选择项目时,将使用传递给侦听器的位置检索Map。完成后,只需致电
map = adapterList.get(pos);
selectedId = map.get("person_id");
以下是SimpleAdapter的更多信息,下面是构造函数上的doc供参考。
您的想法是创建地图的ArrayList,每个地图条目必须至少您要显示的数据,但它可以包含更多 数据比你想要显示的数据。
您提供的from
,to
数组会调整您提供给您提供的视图的地图条目。如果在地图条目中包含额外信息,则会忽略它而不显示。因此,在这种情况下,假设您不想显示personid,您可以将personid添加到Map条目,但不将其添加到from
和to
数组
public SimpleAdapter(Context context,List> data,int resource,String [] from,int [] to)
在API级别1构造函数
中添加参数
context:与此关联的View的上下文 SimpleAdapter正在运行
数据:地图列表。列表中的每个条目 对应于列表中的一行。地图包含每个数据 行,并应包括“from”
中指定的所有条目resource:定义视图的视图布局的资源标识符 对于此列表项。布局文件至少应包含那些 在“to”中定义的命名视图
from:将列出的列名 添加到与每个项目关联的地图。
to:应该的观点 显示“from”参数中的列。这些都应该是TextViews。 此列表中的前N个视图被赋予前N个的值 from参数中的列。