Android - configure Spinner to use array

I declare my Spinner in the following manner (it's very static so I have 2 string arrays in array.xml for titles and values)

<Spinner
    android:id="@+id/searchCriteria"
    android:entries="@array/searchBy"
    android:entryValues="@array/searchByValues" />

I expect spinner.getSelectedItem() to return an array [title, value] but in fact it returns just a title String. Is it ignoring android:entryValues? How do I get a value, not a title from it? Is this doable with XML only or do I need to create adapter and do it программно?

47
задан Vadim Kotov 24 July 2019 в 12:20
поделиться

2 ответа

Итак, если вы пришли сюда, потому что хотите иметь и метку, и значение в счетчике - вот как я это сделал:

  1. Просто создайте свой счетчик обычным способом
  2. Определите 2 равных размер массивов в вашем файле array.xml. Один для меток, другой для значений
  3. Установите свой Spinner с помощью android: entries = "@ array / labels"
  4. В вашем коде - когда вам нужно значение, сделайте что-то вроде этого (нет, у вас нет чтобы связать его)

     String selectedVal = getResources (). getStringArray (R.array.values) [spinner
     .getSelectedItemPosition ()];
    

  5. И помните - эти 2 массива должны соответствовать друг другу по числовым ячейкам и позициям
54
ответ дан 26 November 2019 в 19:10
поделиться

Прервать, прервать! Не знаю, что на меня нашло, но Spinner не поддерживает атрибут android: entryValues ​​. Это фактически из ListPreference , который делает то же самое (отображает список элементов во всплывающем диалоговом окне). Для того, что мне нужно, мне придется (увы) использовать SpinnerAdapter

8
ответ дан 26 November 2019 в 19:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: