2012-03-14 26 views
2

У меня есть элемент с идентификатором и стоимостью, и я хочу добавить их в прядильщик. Итак, когда я выбираю элемент, я получу его идентификатор. Я могу только добавить itemValue, как показано ниже, и получить выбранную строку.Выберите элемент в Spinner - Android

Может ли кто-нибудь дать мне решение для этого?

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); 
+0

То, что вы хотите получить от блесны? R u хотите получить выбранный элемент или выбранную позицию позиции? – VenkaReddy

+1

У меня есть Item (id, value), который извлекается из REST. Я хочу положить его в прядильщик и отобразить элемент по значению. Но когда я выберу элемент, я отправлю его обратно на сервер (item.id не относится к позиции в spinner) – TrungNguyen

ответ

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.. 
+0

вместо ArrayAdapter dataAdapter use ArrayAdapter dataAdapter ... – 5hssba

+0

Спасибо, что сейчас он работает, но Я использовал Answer selected = (Answer) sp.getSelectedItem(); – TrungNguyen

+0

: D srr Я забыл: D – TrungNguyen

0

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

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

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

+0

У меня уже есть этот POJO и я просто попытался использовать ArrayAdapter , а затем установить его в spinner , И то, что я получил на экране для spinner, - [email protected] Можете ли вы дать мне более подробную информацию о написании моего адаптера? спасибо akkilis – TrungNguyen

+0

Srr для моего плохого английского :) – TrungNguyen

+0

@raju: искренние извинения, если я был груб, но я имею в виду это. Пожалуйста, не возражайте :) – akkilis

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()); 
} 
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()); 

 Смежные вопросы

  • Нет связанных вопросов^_^