2010-04-16 51 views
46

Estoy tratando de obtener la cadena de elementos seleccionados de un Spinner. Hasta ahora he conseguido esto:¿Cómo se obtiene el valor seleccionado de un Spinner?

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

Esto no funciona y da una excepción de fundición clase (pensé que podría lanzar un View a un widget que hereda es evidente que no.!) Entonces, ¿cómo conseguir el seleccionado valor de un Spinner?

Respuesta

72

Para obtener el valor seleccionado de un girador puede seguir este example.

Crea una clase anidada que implementa AdapterView.OnItemSelectedListener. Esto proporcionará un método de devolución de llamada que notificará a su aplicación cuando se haya seleccionado un elemento del Spinner.

Dentro método "onItemSelected" de esa clase, se puede obtener el elemento seleccionado:

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. 
    } 
} 

Por último, el ItemSelectedListener tiene que estar registrado en el Spinner:

spinner.setOnItemSelectedListener(new MyOnItemSelectedListener()); 
+0

Gracias, esto se ve genial! Por anidado, ¿te refieres a otro método (por ejemplo, onCreate de una nueva vista)? –

+0

De nada. Clases anidadas: http: //java.sun.com/docs/books/tutorial/java/javaOO/nested.html – jalopaba

+0

gracias por la información! t –

5

Depende ay que señalar desean "atrapar" el valor.

Por ejemplo, si se desea capturar el valor tan pronto como el usuario cambia el elemento giratorio seleccionado, utilice el enfoque de oyente (proporcionado por jalopaba)

Si prefiere coger el valor cuando un usuario realiza la final tarea como hacer clic en un botón Enviar, o algo así, entonces la respuesta proporcionada por Rich es mejor.

16

mySpinner.getItemAtPosition(mySpinner.getSelectedItemPosition()) funciona en función de la descripción de Rich.

+0

'mySpinner.getSelectedItem()' es un equivalente más corto. A continuación, agregue '.toString()' para obtenerlo como una cadena. – ToolmakerSteve

41

simplemente usar esto:

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

Esto le dará la String del elemento seleccionado en el Spinner.

+2

Estoy votando esta solución porque la respuesta aceptada parece excesiva si el objetivo es simplemente obtener el valor seleccionado del Spinner. – ashack

+5

'fields.getSelectedItem(). ToString()' es un equivalente más corto. – ToolmakerSteve

1

Ésta es otra manera:

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

para obtener sólo el valor de cadena en el uso spinner los siguientes:

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

En valores Spinner caso son int el encasillado a int

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