web-dev-qa-db-fra.com

Comment obtenez-vous la valeur sélectionnée d'un Spinner?

J'essaie d'obtenir les éléments sélectionnés d'une chaîne Spinner. Jusqu'ici j'ai eu ceci:

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

Cela ne fonctionne pas et donne une exception de casting de classe (je pensais pouvoir lancer un View vers un widget qui en hérite. Évidemment non!) Comment obtenir la valeur sélectionnée d'un Spinner?

49
Matthew Hall

Pour obtenir la valeur sélectionnée d'un compteur, vous pouvez suivre cet exemple exemple .

Créez une classe imbriquée qui implémente AdapterView.OnItemSelectedListener. Cela fournira une méthode de rappel qui informera votre application lorsqu'un élément a été sélectionné dans Spinner.

Dans la méthode "onItemSelected" de cette classe, vous pouvez obtenir l'élément sélectionné:

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

Enfin, votre ItemSelectedListener doit être enregistré dans le Spinner:

spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
71
jalopaba

Vous avez les méthodes getSelectedXXX de la classe AdapterView à partir de laquelle Spinner dérive:

getSelectedItem ()

getSelectedItemPosition ()

getSelectedItemId ()

53
Rich

Utilisez simplement ceci:

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

Cela vous donnera la String de l'élément sélectionné dans la Spinner

43
Tharaka Devinda

mySpinner.getItemAtPosition(mySpinner.getSelectedItemPosition()) fonctionne d'après la description de Rich. 

16
Chrispix

Tout dépend du point sur lequel vous souhaitez "attraper" la valeur.

Par exemple, si vous souhaitez intercepter la valeur dès que l'utilisateur modifie l'élément sélectionné en utilisant la fonction de rotation, utilisez l'approche d'écoute (fournie par jalopaba).

Si vous attrapez plutôt la valeur lorsqu'un utilisateur effectue la dernière tâche, par exemple en cliquant sur un bouton Soumettre ou quelque chose du genre, la réponse fournie par Rich est meilleure.

5
Tivie

C'est une autre façon: 

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
Sasa

Pour obtenir uniquement la valeur de chaîne dans le compteur, utilisez ce qui suit:

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

Dans le cas des valeurs Spinner sont int le transtypé à int

int valueinInt=(int)(spinner.getSelectedItem());
0
Adnan Ali