Android spinner

485
31 декабря 2016, 14:24

Я получаю значение для spinner из базы данных на сервере и храню его в ArrayList:

                JSONArray jsonArray = new JSONArray(json);
                if (jsonArray != null) {
                   //JSONArray userDetails = jsonObj.getJSONArray("child_name");
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject catObj = (JSONObject)jsonArray.getJSONObject(i);
                        NameChild cat = new NameChild(catObj.getString("id"), catObj.getString("name"));
                        namesList.add(cat);
                    }
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

После этого я загружает одно из полученных значений в spinner:

 List <String> lables = new ArrayList<String>();
    for (int i = 0; i < namesList.size(); i++) {
        lables.add(namesList.get(i).getName());
    }
    spinnerview = (Spinner) view.findViewById(R.id.spinner2);
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, lables);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerview.setAdapter(adapter);

Мой вопрос заключается в следующем: как мне получить id выбранного значения с spinner, которое было загружено вместе с ним с сервера?

Answer 1

Вам надо отображать не строки в адаптере, но объекты ваших данных. Для этого надо:

  1. Указать адаптеру тип отображаемых данных при его создании, т.е. заменить String на NameChild так:
 adapter = new ArrayAdapter<NameChild>(this, android.R.layout.simple_spinner_item, namesList);
  1. Переопределить toString() метод в вашем объекте данных для того, чтобы спиннер отображал нужное. В вашем случае - пусть метод возвращает NameChild#getName() так:
public class NameChild {
    //тут существующие методы класса
    @Override
    public String toString() {
        return getName();
    }
}
READ ALSO
Вылетает Android приложение: Could not execute method for android:onClick

Вылетает Android приложение: Could not execute method for android:onClick

Приложение вылетает вот здесь:

461
The type javax.swing.JComponent cannot be resolved

The type javax.swing.JComponent cannot be resolved

У меня странная ошибка кода:

858
JSF и jQuery совместимость

JSF и jQuery совместимость

Есть JSF, в нем в есть тег:

377
Группировка в SimpleCursorAdapter

Группировка в SimpleCursorAdapter

Господа, подскажите, есть ли возможность, используя SimpleCursorAdapter стандартно в ListView, сделать группировку одинаковых значений в одно? И также,...

381