Выбрать элемент в Spinner - Android - PullRequest
2 голосов
/ 14 марта 2012

У меня есть предмет с идентификатором и значением, и я хочу добавить их в счетчик. Поэтому, когда я выбираю предмет, я получу его идентификатор. Я могу только добавить 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 ]

8 голосов
/ 14 марта 2012

класс элементов

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..
0 голосов
/ 25 апреля 2013

Создать новый enum:

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());
0 голосов
/ 20 марта 2013
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());
}
0 голосов
/ 14 марта 2012

Создайте собственный класс pojo, скажем, Item и добавьте в него два поля, id и name.
Затем составьте список этих элементов, напишите свой собственный адаптер для счетчика и используйте его.
Он вернет вам весь объект класса Item, когда вы щелкнете по любому его элементу.

Иначе, если идентификаторы элементов являются последовательными, то вы можете сопоставить их с идентификаторами элементов и продолжить с ту же реализацию вы сделали прямо сейчас.

Но первый подход рекомендуется, так как вы разрабатываете с использованием объектно-ориентированного языка, и ваши структуры данных должны представлять действительные объекты ваших требований в приложении.

...