在Spinner中选择项目 - Android

时间:2012-03-14 10:13:07

标签: android spinner android-spinner

我有一个id和value的项目,我想将它们添加到微调器中。 因此,当我选择项目时,我会得到它的ID。我只能添加如下的itemValue并获取所选的字符串。

有人能为我解决这个问题吗?

List<String> list = new ArrayList<String>();
                list.add("item 1");
                list.add("item 2");
                list.add("item 3");
                ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(
                        this, android.R.layout.simple_spinner_item, list);
                dataAdapter
                        .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                final Spinner sp = new Spinner(this);
                sp.setAdapter(dataAdapter);

4 个答案:

答案 0 :(得分:8)

项目类

public class items {
private String name;
private int id;

public String getname() {
    return name;
}
public void setname(String name) {
    this.name = name;
}

public int getid() {
    return id;
}
public void setid(int id) {
    this.id =id;
}
@Override
public String toString() {
    return name;
}
}

现在将项目添加到数组列表中,如下所示

List<items> values1=new ArrayList();
items comment = new items();
    comment.setname("name1");
    comment.setid("id1");
values1.add(comment);
ArrayAdapter<items> dataAdapter = new ArrayAdapter<String>(
                    this, android.R.layout.simple_spinner_item, list);...

就像你在这里的代码中所做的那样.. 像这样设置onitemselected监听器......

sp.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
items item1 = (items)arg0.getItemAtPosition(arg2);
int id= item1.id<---- get id here..

答案 1 :(得分:0)

创建一个自己的pojo类Item并在其中添加两个字段,id和name。
然后列出这些项目并为微调器编写自己的适配器,并使用它。
当你单击任何项​​目时,它将返回Item类的整个对象。

否则,如果项目ID是顺序的,那么你可以用项目ID映射它们你也可以继续使用相同的实现,你现在已经完成了。

但是第一种方法是推荐的方法,因为你正在使用面向对象的语言开发,你的数据结构必须代表实际的对象您在申请中的要求。

答案 2 :(得分:0)

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
    // TODO Auto-generated method stub


    //code one
    String arr[]=getResources().getStringArray(R.array.days);

    text1.setText(arr[arg2]);

    //or 

    //code two
    text1.setText(((TextView)arg1).getText());
}

答案 3 :(得分:0)

创建新的枚举:

public enum EnumerateThis {
    ENUM1(0, "Use this like a value"),
    ENUM2(1, "and first argumenta like an integer id");

    private Integer id;
    private String descr;

    private EnumerateThis (Integer id, String place){
        this.id = id;
        this.descr = place;
    }

    public Integer getId() {
        return id;
    }

    public String getDescr() {
        return descr;
    }
}

比使用微调器适配器:

ArrayAdapter<EnumerateThis> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, EnumerateThis.values());