我有键和值的列表,
key =是表中ID的字符串。
值=是一个名称字符串,
我想仅在微调器视图中显示不含ID的值,但是在用户点了某个项目后,我需要获取所选项目的ID,并在代码中使用它。
如何使用hashMap或许多foreach语句来实现这种结构?
谢谢,
最佳答案
创建一个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()
方法很重要。那将在微调器项目中显示。您可以像这样将其传递给您的
ArrayAdapter
:ArrayAdapter userAdapter = new ArrayAdapter(this, R.layout.spinner, myList);
当用户单击某个项目时,
getSelectedItem()
方法将为您提供对象。您可以从那里获取id
。从docs:
由任意对象数组支持的具体BaseAdapter。默认情况下,此类期望提供的资源ID引用单个TextView。如果要使用更复杂的布局,请使用也带有字段ID的构造函数。该字段ID应该在较大的布局资源中引用TextView。
但是,如果引用了TextView,它将使用数组中每个对象的toString()进行填充。您可以添加自定义对象的列表或数组。重写对象的toString()方法,以确定将为列表中的项目显示什么文本。