Autore Topic: SpinnerActivity  (Letto 474 volte)

Offline cdavide

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    CUBOT S350
  • Sistema operativo:
    Ubuntu 14.04
SpinnerActivity
« il: 03 Novembre 2015, 18:00:45 CET »
0

ciao a tutti

in un progetto creato con android studio ho inserito uno spinner
in content_main.xml associato a un array di stringhe creato nel file string.xml

ora vorrei capire come catturare la scelta che l'utente fa tra tutte le voci dello spinner

ho inserito in MainActivity.java dentro la funzione onCreate questo:
Codice (XML): [Seleziona]
        Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                R.array.mio_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner1.setAdapter(adapter);

non capisco come e dove usare la funzione OnItemSelectedListener
per catturare la scelta dell'utente

scusate se la domanda non è chiara, sono ancora all'inizio

grazie

Offline LonelyWolf

  • Utente junior
  • **
  • Post: 148
  • Respect: +12
    • Mostra profilo
    • Traversate dei laghi
  • Dispositivo Android:
    GT-I9505, ALE-L21
  • Sistema operativo:
    Windows 7 32/64
Re:SpinnerActivity
« Risposta #1 il: 03 Novembre 2015, 18:11:07 CET »
0
Quella funzione serve per far caricare i valori allo spinner.

Ora devi associare allo spinner un listener che agisca quando l'utente seleziona un elemento, a.e.:

Codice: [Seleziona]
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
                //position è l'indice dell'elemento selezinoato, il primo è lo 0
                    switch(position) {
                      case 0://azioni da compiere per primo elemento
                            break;
                        case 1://azioni da compiere per secondo elemento
                            break;
                        case 2://azioni da compiere per terzo elemento
                            break;
                        case 3://azioni da compiere per quarto elemento
                            break;
                            //e così via
                    }
            }
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {}
        });
Se la mia risposta ti è utile, per favore un thanks!

Offline cdavide

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    CUBOT S350
  • Sistema operativo:
    Ubuntu 14.04
Re:SpinnerActivity
« Risposta #2 il: 04 Novembre 2015, 10:18:48 CET »
0
grazie, mi sembra che funzioni

il codice che hai scritto bisogna metterlo sempre dentro il metodo onCreate, giusto ?

...
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
ecc ...

all'inizio l'avevo messo sempre in MainActivity.java ma al di fuori di onCreate però dava errori


Offline LonelyWolf

  • Utente junior
  • **
  • Post: 148
  • Respect: +12
    • Mostra profilo
    • Traversate dei laghi
  • Dispositivo Android:
    GT-I9505, ALE-L21
  • Sistema operativo:
    Windows 7 32/64
Re:SpinnerActivity
« Risposta #3 il: 05 Novembre 2015, 10:04:19 CET »
0

Ha poco senso metterlo altrove, quando si avvia l'applicazione si associano tutti i comandi/risorse.

Ti ricordo che il mio è solo un esempio e avvia azioni in base alla posizione dell'elemento cliccato, cosa fattibile solo se hai elementi statici che conosci già in fase di scrittura del codice.
Se la mia risposta ti è utile, per favore un thanks!