我有键和值列表, key =是表中id的String。 value =是一个名称字符串,
我想在spinner视图中只显示没有Ids的vululues,但是在用户访问某个项目后我需要获取所选项目的Id,并在代码中使用它。 如何使用hashMap或许多foreach语句实现此结构whitout?
谢谢,
答案 0 :(得分:0)
单击侦听器接收单击的视图。 类视图支持ViewHolder'模式(如在RecyclerView中),其中对所有小部件的引用存储在ViewHolder中,以后可以访问。您可以使用相同的方法 - 创建类,包含一些信息和对点击侦听器的引用,然后将其设置为View.setTag()创建的下拉项。选择项目后,查询此对象并调用要执行的runnable - 您的操作
答案 1 :(得分:0)
创建一个POJO类并将ArrayList
个自定义对象传递给微调器。
class MyClass{
private String id;
private String key;
public MyClass(String id, String value) {
this.id = id;
this.value = value;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public String toString() {
return value;
}
}
覆盖toString()
方法非常重要。那将在spinner项目中显示的内容。
您可以将其传递给您的ArrayAdapter
:
ArrayAdapter userAdapter = new ArrayAdapter(this, R.layout.spinner, myList);
当用户点击某个项目时,getSelectedItem()
方法会为您提供对象。你可以从那里得到id
。
来自docs:
由任意对象数组支持的具体BaseAdapter。默认情况下,此类期望提供的资源ID引用单个TextView。如果要使用更复杂的布局,请使用也带有字段ID的构造函数。该字段id应引用较大布局资源中的TextView。
但是引用了TextView,它将填充数组中每个对象的toString()。您可以添加自定义对象的列表或数组。覆盖对象的toString()方法,以确定将为列表中的项显示哪些文本。