Sous Android, j'essaie d'obtenir la valeur Spinner sélectionnée avec un écouteur.
Quelle est la meilleure façon d'obtenir la valeur du spinner?
Sous Android, j'essaie d'obtenir la valeur Spinner sélectionnée avec un écouteur.
Quelle est la meilleure façon d'obtenir la valeur du spinner?
Réponses:
Spinner mySpinner = (Spinner) findViewById(R.id.your_spinner);
String text = mySpinner.getSelectedItem().toString();
Le Spinner doit 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) {
}
});
Dites qu'il s'agit de votre xml avec des entrées de 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
android:entries
fait ma journée.
Oui, vous pouvez enregistrer un auditeur via setOnItemSelectedListener()
, comme illustré ici .
Si vous savez déjà que l'article est un String
, je préfère:
String itemText = (String) mySpinner.getSelectedItem();
Faire appel toString()
à un Object
que vous connaissez est un String
chemin plus détourné que de simplement lancer le Object
to String
.
ajoutez setOnItemSelectedListener à la référence de spinner et obtenez les données comme ça`
mSizeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
selectedSize=adapterView.getItemAtPosition(position).toString();