En Android, estoy tratando de obtener el valor Spinner seleccionado con un oyente.
¿Cuál es la mejor manera de obtener el valor de la ruleta?
En Android, estoy tratando de obtener el valor Spinner seleccionado con un oyente.
¿Cuál es la mejor manera de obtener el valor de la ruleta?
Respuestas:
Spinner mySpinner = (Spinner) findViewById(R.id.your_spinner);
String text = mySpinner.getSelectedItem().toString();
El Spinner debería disparar un evento "OnItemSelected" cuando se selecciona algo:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
Object item = parent.getItemAtPosition(pos);
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
Digamos que este es su xml con entradas de spinner (es decir, títulos) y valores:
<resources>
<string-array name="size_entries">
<item>Small</item>
<item>Medium</item>
<item>Large</item>
</string-array>
<string-array name="size_values">
<item>12</item>
<item>16</item>
<item>20</item>
</string-array>
</resources>
y esta es tu ruleta:
<Spinner
android:id="@+id/size_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/size_entries" />
Luego, en su código para obtener las entradas:
Spinner spinner = (Spinner) findViewById(R.id.size_spinner);
String size = spinner.getSelectedItem().toString(); // Small, Medium, Large
y para obtener los valores:
int spinner_pos = spinner.getSelectedItemPosition();
String[] size_values = getResources().getStringArray(R.array.size_values);
int size = Integer.valueOf(size_values[spinner_pos]); // 12, 16, 20
android:entries
me alegró el día.
Sí, puede registrar un oyente a través de setOnItemSelectedListener()
, como se demuestra aquí .
Si ya sabe que el artículo es un String
, prefiero:
String itemText = (String) mySpinner.getSelectedItem();
Llamar toString()
a un Object
que usted sabe es un String
camino más indirecto que simplemente lanzar el Object
a String
.
agregue setOnItemSelectedListener a la referencia del spinner y obtenga los datos así`
mSizeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
selectedSize=adapterView.getItemAtPosition(position).toString();