Autore Topic: Creare uno Spinner con Key/Value  (Letto 1179 volte)

Offline java_analist

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Creare uno Spinner con Key/Value
« il: 16 Marzo 2012, 16:00:54 CET »
0
Ho cercato in rete ma ho trovato ben poco. Avrei la necessità di creare uno Spinner che sia caratterizzato dalla coppia chiave-valore, così come accade in Html per una comboBox.
Lo Spinner deve visualizzare all'utente il valore (ad esempio la descrizione di una provincia) e nascondere la chiave (ad esempio l'id della provincia); l'utente sceglie il valore ma l'applicazione ha bisogno del suo id per altre tipi di operazioni.
Mi potreste aiutare?

Grazie

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Creare uno Spinner con Key/Value
« Risposta #1 il: 16 Marzo 2012, 16:55:19 CET »
0
Io fare cosi':

Codice (XML): [Seleziona]
<Spinner
       android:id="@+id/gender"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:entries="@array/genderValues"
       android:prompt="@string/genderTitle" />

Poi le stringhe:

Codice (XML): [Seleziona]
<string name="genderTitle">Sesso</string>
<string-array name="genderValues">
    <item>Signor</item>
    <item>Signora</item>
</string-array>
<string-array name="genderType">
    <item>male</item>
    <item>female</item>
</string-array>

E per recuperare il valore:

Codice (Java): [Seleziona]
getResources().getStringArray(R.array.genderType)[_gender.getSelectedItemPosition()]
Dove:

Codice (Java): [Seleziona]
Spinner _gender = (Spinner)findViewById(R.id.gender);
Che ne pensi?

Saluti.




I numeri contano molto di più del seme.

Offline java_analist

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Re:Creare uno Spinner con Key/Value
« Risposta #2 il: 19 Marzo 2012, 09:10:13 CET »
0
Ti ringrazio per la tua soluzione. Ma quello che tu proponi in realtà non è quello che sto cercando. Nella tua soluzione si presuppone che i dati che alimentano lo spinner siano in un file xml. Nel mio caso invece lo spinner viene alimentato dinamicamente con dei dati che provengono dalla chiamata ad un web service. Pertanto, la tua soluzione, seppur interessante, non fa al caso mio.

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Creare uno Spinner con Key/Value
« Risposta #3 il: 19 Marzo 2012, 09:21:56 CET »
0
E cosa cambia? Invece di utilizzare degli array definiti in un xml utilizzi degli arraylist che ti crei dinamicamente dopo la chiamata del webservices  ;-)

Offline java_analist

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Re:Creare uno Spinner con Key/Value
« Risposta #4 il: 19 Marzo 2012, 09:47:54 CET »
0
Ok, ho risolto in questo modo.

final ProvinceForm[] elenco = readElencoProvince();
spinnerProvincia = (Spinner)findViewById(R.id.spinnerProvincia);
ArrayAdapter<ProvinceForm> adapter = new ArrayAdapter<ProvinceForm>(this, android.R.layout.simple_spinner_item, elenco);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerProvincia.setAdapter(adapter);
spinnerProvincia.setOnItemSelectedListener(new OnItemSelectedListener() {
   @Override
   public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
      ProvinceForm provincia = elenco[position];
      System.out.println(provincia.getIdProvincia());
   }
   @Override
   public void onNothingSelected(AdapterView<?> arg0) {
   }

Grazie         
         });