Как вы получаете выбранное значение Spinner? - PullRequest
51 голосов
/ 16 апреля 2010

Я пытаюсь получить строку выбранных элементов из Spinner. До сих пор я получил это:

bundle.putString(ListDbAdapter.DB_PRI, v.getText().toString());

Это не работает и дает исключение приведения класса (я думал, что могу привести View к виджету, который его наследует. Очевидно, нет!) Так как же получить выбранное значение Spinner?

Ответы [ 8 ]

72 голосов
/ 16 апреля 2010

Чтобы получить выбранное значение счетчика, вы можете следовать этому примеру .

Создайте вложенный класс, который реализует AdapterView.OnItemSelectedListener. Это обеспечит метод обратного вызова, который уведомит ваше приложение, когда элемент будет выбран из Spinner.

В методе "onItemSelected" этого класса вы можете получить выбранный элемент:

public class YourItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        String selected = parent.getItemAtPosition(pos).toString();
    }

    public void onNothingSelected(AdapterView parent) {
        // Do nothing.
    }
}

Наконец, ваш ItemSelectedListener должен быть зарегистрирован в Spinner:

spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
53 голосов
/ 16 апреля 2010

У вас есть методы getSelectedXXX из класса AdapterView, из которого происходит Spinner:

getSelectedItem ()

getSelectedItemPosition ()

getSelectedItemId ()

43 голосов
/ 13 февраля 2012

Просто используйте это:

spinner.getItemAtPosition(spinner.getSelectedItemPosition()).toString();

Это даст вам String выбранного элемента в Spinner.

16 голосов
/ 14 августа 2011

mySpinner.getItemAtPosition(mySpinner.getSelectedItemPosition()) работает на основе описания Рича.

5 голосов
/ 17 ноября 2010

Зависит от того, в какой точке вы хотите «поймать» значение.

Например, если вы хотите поймать значение, как только пользователь изменит элемент, выбранный вращателем, используйте подход «слушатель» (предоставленный jalopaba)

Если вы предпочитаете ловить значение, когда пользователь выполняет последнее задание, например, нажав кнопку «Отправить» или что-то в этом роде, тогда ответ, предоставленный Rich, лучше.

1 голос
/ 29 сентября 2015

Чтобы получить только строковое значение внутри счетчика, используйте следующее:

spinner.getSelectedItem().toString();
1 голос
/ 19 августа 2015

Это еще один способ:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int pos, long arg3) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });
0 голосов
/ 19 июня 2017
Spinner spinner=(Spinner) findViewById(R.id.spinnername);
String valueinString = spinner.getSelectedItem().toString();

В случае, если значения Spinner равны int, введите его int

int valueinInt=(int)(spinner.getSelectedItem());
...