我有键和值的列表,
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()方法,以确定将为列表中的项目显示什么文本。

10-06 13:31
查看更多