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
?
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());
Vous avez les méthodes getSelectedXXX de la classe AdapterView à partir de laquelle Spinner dérive:
Utilisez simplement ceci:
spinner.getItemAtPosition(spinner.getSelectedItemPosition()).toString();
Cela vous donnera la String
de l'élément sélectionné dans la Spinner
.
mySpinner.getItemAtPosition(mySpinner.getSelectedItemPosition())
fonctionne d'après la description de Rich.
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.
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
}
});
Pour obtenir uniquement la valeur de chaîne dans le compteur, utilisez ce qui suit:
spinner.getSelectedItem().toString();
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());