2010-04-16 6 views
46

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

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

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

ответ

72

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

Создайте вложенный класс, который реализует 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()); 
+0

Спасибо, это отлично! Вложенным вы имеете в виду другой метод (например, onCreate нового представления)? –

+0

Добро пожаловать. Вложенные классы: http: //java.sun.com/docs/books/tutorial/java/javaOO/nested.html – jalopaba

+0

спасибо за информацию !! t –

5

Зависит ау, которые указывают вы хотите "поймать" значение.

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

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

16

mySpinner.getItemAtPosition(mySpinner.getSelectedItemPosition()) работы, основанные на описании Богата.

+0

'mySpinner.getSelectedItem()' является более коротким эквивалентом. Затем добавьте '.toString()', чтобы получить его как строку. – ToolmakerSteve

41

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

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

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

+2

Я поддерживаю это решение, потому что принятый ответ кажется чрезмерным, если целью является просто получить выбранное значение из Spinner. – ashack

+5

'fields.getSelectedItem(). ToString()' является более коротким эквивалентом. – ToolmakerSteve

1

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

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 

     } 
    }); 
1

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

spinner.getSelectedItem().toString(); 
0
Spinner spinner=(Spinner) findViewById(R.id.spinnername); 
String valueinString = spinner.getSelectedItem().toString(); 

В случае значении Spinner является int напечатанным это int

int valueinInt=(int)(spinner.getSelectedItem()); 
Смежные вопросы