Dans Android, j'essaie d'obtenir la valeur Spinner sélectionnée avec un écouteur.Comment obtenir la valeur Spinner?
Quelle est la meilleure façon d'obtenir la valeur du filateur?
Dans Android, j'essaie d'obtenir la valeur Spinner sélectionnée avec un écouteur.Comment obtenir la valeur Spinner?
Quelle est la meilleure façon d'obtenir la valeur du filateur?
Spinner mySpinner=(Spinner) findViewById(R.id.your_spinner);
String text = mySpinner.getSelectedItem().toString();
"Valeur" est assez ambigu ici. Cela récupère le titre actuel de l'élément spinner (comme dans, la chaîne qui est affichée à l'utilisateur), mais pas sa valeur si vous avez mappé un tableau int sur le spinner par exemple. –
@Doge pour obtenir la valeur de l'élément sélectionné comme valeur entière par exemple nous devrions faire int [] valuesArray et le classer dans la fonction onCreate peut-être à partir de arrays.xml afin que nous puissions utiliser valuesArray [(int) mySpinner.getSelectedItemId()] pour obtenir la valeur entière –
Oui, vous pouvez enregistrer un écouteur via setOnItemSelectedListener()
, comme démontré here.
Merci - cela a fonctionné aussi, et (je pense) il rend le code plus facile à lire. –
Le Spinner devrait déclencher un événement "OnItemSelected" quand quelque chose 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) {
}
});
Merci - cela a fonctionné, bien que j'ai dû ajouter le type de retour de void aux méthodes. –
N'y at-il vraiment aucun moyen d'y parvenir sans compter sur la position de l'objet? – Vinz
Pas une solution très utile si vous voulez lire la valeur spinner sans se fier à un événement de sélection. – AndroidDev
View view =(View) getActivity().findViewById(controlId);
Spinner spinner = (Spinner)view.findViewById(R.id.spinner1);
String valToSet = spinner.getSelectedItem().toString();
Si vous connaissez déjà l'élément est un String
, je préfère:
String itemText = (String) mySpinner.getSelectedItem();
Appeler toString()
sur un Object
que vous connaissez est un String
semble être plus chemin du rond-point que de simplement couler le Object
à String
.
Dites ceci est votre xml avec des entrées de spinner et les valeurs (c.-à-titres.):
<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 ceci est 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
Thx, cela devrait être dans le document officiel ANDR sur spinner, ils ont montré seulement obtenir de la valeur via Listener. – visual
exactement ce que je cherche –
Vous devriez définitivement accepter [la réponse de dodo] (http://stackoverflow.com/a/7486969/1747491). – theblang