Comment obtenir la valeur sélectionnée d'un Spinner?
j'essaie de sortir la chaîne d'éléments sélectionnée d'un Spinner
. Jusqu'à présent j'ai obtenu ceci:
bundle.putString(ListDbAdapter.DB_PRI, v.getText().toString());
Cela ne fonctionne pas et donne une classe casting d'exception (je pensais que je pouvais jeter un View
à un widget qui l'hérite. Évidemment pas!) Alors comment obtenir la valeur sélectionnée d'un Spinner
?
8 réponses
Pour obtenir la valeur sélectionnée d'un spinner, vous pouvez suivre ce exemple.
Créer une classe imbriquée qui implémente AdapterView.OnItemSelectedListener. Cela fournira une méthode de rappel qui avertira votre application quand un élément a été sélectionné à partir du 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.
}
}
spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
vous avez les méthodes getSelectedXXX de la classe AdapterView dont le Spinner dérive:
utilisez simplement ceci:
spinner.getItemAtPosition(spinner.getSelectedItemPosition()).toString();
Cela vous donnera l' String
de l'élément sélectionné dans le Spinner
.
mySpinner.getItemAtPosition(mySpinner.getSelectedItemPosition())
travaux basés sur la description de Rich.
dépend de quel point vous souhaitez "attraper" la valeur.
Par exemple, si vous voulez prendre de la valeur dès que l'utilisateur change le spinner élément sélectionné, utilisez l'approche de l'auditeur (fourni par jalopaba)
si vous attrapez plutôt la valeur quand un utilisateur exécute la tâche finale comme un clic sur un bouton Soumettre, ou quelque chose, alors 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 juste la valeur de la chaîne dans le spinner utilisez ce qui suit:
spinner.getSelectedItem().toString();
Spinner spinner=(Spinner) findViewById(R.id.spinnername);
String valueinString = spinner.getSelectedItem().toString();
dans le cas où les valeurs de Spinner sont int
le transtypage int
int valueinInt=(int)(spinner.getSelectedItem());