web-dev-qa-db-fra.com

Comment obtenir de la valeur Spinner?

Sous Android, j'essaie d'obtenir la valeur Spinner sélectionnée avec un auditeur.

Quel est le meilleur moyen d'obtenir la valeur du spinner?

242
Sam Dutton
Spinner mySpinner = (Spinner) findViewById(R.id.your_spinner);
String text = mySpinner.getSelectedItem().toString();
538
dodo

Le Spinner devrait déclencher un événement "OnItemSelected" lorsqu'un élément est sélectionné:

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) {
    }
});
123
Erich Douglass

Dites que ceci est votre xml avec des entrées spinner (c'est-à-dire des titres) et des valeurs:

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

et voici votre spinner:

<Spinner
    Android:id="@+id/size_spinner"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:entries="@array/size_entries" />

Puis dans votre code pour obtenir les entrées:

Spinner spinner = (Spinner) findViewById(R.id.size_spinner);
String size = spinner.getSelectedItem().toString(); // Small, Medium, Large

et pour obtenir les valeurs:

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
45
lenooh

Oui, vous pouvez enregistrer un auditeur via setOnItemSelectedListener(), comme il est démontré ici .

14
CommonsWare
View view =(View) getActivity().findViewById(controlId);
Spinner spinner = (Spinner)view.findViewById(R.id.spinner1);
String valToSet = spinner.getSelectedItem().toString();
12
gilix

Si vous savez déjà que l'élément est un String, je préfère:

String itemText = (String) mySpinner.getSelectedItem();

L'appel de toString() sur un Object que vous savez être un String semble être un chemin plus détourné que de simplement lancer le Object à String.

11
Matt Logan