Возвращение строки из ArrayAdapter - PullRequest
0 голосов
/ 04 декабря 2011

Я создал Spinner и ArrayAdapter следующим образом:

Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
final ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(
            this, R.array.units_array1, android.R.layout.simple_spinner_item);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter1);

Unit_array1 - это строковый массив, объявленный в XML-файле, например:

<string-array name="units_array1">
    <item>Centimeters</item>
    <item>Meters</item>
    <item>Kilometers</item>
    <item>Inches</item>
    <item>Foots</item>
    <item>Miles</item>
</string-array>

Теперь я хочу реализовать некоторые условия If-ELSE, основанные на элементах в массиве строк. Я много исследовал в Интернете для этого, но не нашел никакого решения, которое работает. Пожалуйста, помогите мне в реализации функции, которая возвращает отдельные элементы из массива строк с помощью адаптера.

Ответы [ 4 ]

3 голосов
/ 04 декабря 2011

ArrayAdapter.getItem(position), где позиция - индекс в массиве.Если вы хотите получить текущий выбранный элемент в Spinner, используйте Spinner.getSelectedItemPosition() в качестве параметра для getItem().

. Это вернет CharSequence из-за того, что вы набрали свой адаптер.Если вы хотите, чтобы эти значения возвращались как строки, переопределите ваш адаптер как ArrayAdapter<String>

HTH!

2 голосов
/ 04 декабря 2011
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View v, int position, long id3) {
        final String scale = adapter1.getItem(position);
        // scale is gonna be "Centimeters" or "Meters", etc...
        if (scale.equals("Centimeters")) {
            // do something
        } else if (scale.equals("Meters")) {
            // do something else 
        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
    }

});
1 голос
/ 04 декабря 2011

Вам нужно установить OnItemSelectedListener для вашего счетчика. Затем в слушателе вы будете уведомлены о событии выбора. Проверьте официальный образец на это: Spinner .

1 голос
/ 04 декабря 2011

ArrayAdapter имеет getItem (int position), который (если вы знаете позицию) получит вам String. ArrayAdapter также имеет getCount (), поэтому вы можете написать простой цикл для получения каждого элемента, если вы не знаете его положение.

...