Autore Topic: Popolare Spinner con text/value  (Letto 1099 volte)

Offline cdiscla

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • crisdisclafani
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus Life - Android Froyo
  • Sistema operativo:
    Mac OS 10.6
Popolare Spinner con text/value
« il: 13 Gennaio 2011, 17:57:17 CET »
0
Ciao,
vorrei popolare uno spinner da codice (quindi non da xml ma con un array o ArrayList) con coppie di valori value/text in modo che sia visualizzato il testo e, al click sull'item, si abbia il valore associato.
In giro ho visto tantissimi esempi con elementi caricati da xml ma non popolati dinamicamente, potreste aiutarmi, per favore?

Grazie , ciao !
c.

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Popolare Spinner con text/value
« Risposta #1 il: 13 Gennaio 2011, 18:07:38 CET »
0
ArrayAdapter | Android Developers

la classe ArrayAdapter ha diversi costruttori.

Puoi passargli anche array o liste ;)

Offline cdiscla

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • crisdisclafani
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus Life - Android Froyo
  • Sistema operativo:
    Mac OS 10.6
Re:Popolare Spinner con text/value
« Risposta #2 il: 14 Gennaio 2011, 14:13:04 CET »
0
Il mio problema e' che non so come creare una lista che abbia la coppia value/testo.

Ho la seguente porzione di codice:

Codice (Java): [Seleziona]
Locale[] loc=java.util.Locale.getAvailableLocales();

ArrayList<String> arr=new ArrayList();

for(int i=0;i<loc.length;i++) {
        arr.add(loc[i].getCountry()+":"+loc[i].getVariant());
}

ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, arr);

e vorrei passare come arr un oggetto che permetta di visualizzare il nome della lingua e di "nascondere" il codice lingua, ma non so come fare  :-[

Ciao, grazie

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Popolare Spinner con text/value
« Risposta #3 il: 14 Gennaio 2011, 14:23:20 CET »
0
La via maestra alla risoluzione del problema è una estensione del tuo ArrayAdapter (come indicava Qlimax).

Una soluzione rozza può essere questa: nello spinner ci metti il TEXT, poi ti fai una funzione che prende in ingresso il TEXT e ti rende il VALUE (di fatto un array associativo). Ripeto, è molto rozzo, ma almeno risolvi la funzionalità che ti serve, vai avanti e sistemi tutto come si deve in un secondo tempo.  :-P
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Popolare Spinner con text/value
« Risposta #4 il: 14 Gennaio 2011, 15:25:42 CET »
+1
Già, potresti implementare una cosa del genere:

Codice (Java): [Seleziona]
ArrayList<String> arr=new ArrayList();
HashMap<String,String> countryToVariant=new HashMap<String,String>();

for(int i=0;i<loc.length;i++) {
        arr.add(loc[i].getCountry());
        countryToVariant.put(loc[i].getCountry(),loc[i].getVariant());
}


quando hai bisgona della variant in base al country fai:

Codice (Java): [Seleziona]
String variant=countryToVariant.get("IT");
(IT sarà il valore ritornato dallo spinner)

Offline cdiscla

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • crisdisclafani
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus Life - Android Froyo
  • Sistema operativo:
    Mac OS 10.6
Re:Popolare Spinner con text/value
« Risposta #5 il: 14 Gennaio 2011, 15:39:25 CET »
0
Grandioso,
proprio quello che cercavo :-)
Grazie mille !!
ciao
c.

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Popolare Spinner con text/value
« Risposta #6 il: 14 Gennaio 2011, 15:55:55 CET »
0
Grandioso,
proprio quello che cercavo :-)
Grazie mille !!
ciao
c.
ricordati che questa implementazione fa una doppia allocazione! non usarla se nello spinner metti migliaia di elementi!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline cdiscla

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • crisdisclafani
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus Life - Android Froyo
  • Sistema operativo:
    Mac OS 10.6
Re:Popolare Spinner con text/value
« Risposta #7 il: 14 Gennaio 2011, 16:30:40 CET »
0
Ok,
grazie; avrei la necessita' di inserire tutte le lingue previste dal device, quindi mi aspetto siano qualche decina, non di piu'

Grazie ancora, ciao !