在没有hashmap结构的微调器中使用键和值

时间:2016-06-28 07:26:36

标签: java android hashmap spinner

我有键和值列表, key =是表中id的String。 value =是一个名称字符串,

我想在spinner视图中只显示没有Ids的vululues,但是在用户访问某个项目后我需要获取所选项目的Id,并在代码中使用它。 如何使用hashMap或许多foreach语句实现此结构whitout?

谢谢,

2 个答案:

答案 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()方法,以确定将为列表中的项显示哪些文本。