Autore Topic: Caricamento secondo spinner in base all'item selezionato del primo  (Letto 454 volte)

Offline criscap1985

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    GT-P5100
  • Sistema operativo:
    SlimKat (4.4.4)
0
Ciao ragazzi,
sono alle prime armi con lo Spinner. Ho capito il funzionamento base e l'evento al click dell'elemento dello spinner. Il mio problema sta nel caricare lo spinner successivo con i dati selezionati in base allo spinner precedente. Vi pongo un'esempio stupido. Nell'allegato in pratica inizialmente vengono caricate tutte le marche. E fin qui non ci sono problemi in pratica carico dall'xml tutte le marche:

Codice (XML): [Seleziona]
<string-array name="marche">

        <item></item>
        <item>AIXAM</item>
        <item>ALFA ROMEO</item>
        <item>AUDI</item>
        <item>BMW</item>
        <item>CHEVROLET</item>
        <item>CHRYSLER</item>
        <item>CITROËN</item>

    </string-array>

Ok?

Il caricamento lo faccio in questo modo:

Codice (Java): [Seleziona]
spinner_marca = (Spinner)findViewById(R.id.spinner_marca);
        adapter = ArrayAdapter.createFromResource(this, R.array.marche, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
        spinner_marca.setAdapter(adapter);
        spinner_marca.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
               
              /*

Qui dovrei mettere il codice per il caricamento del secondo spinner dei dati dei modelli che stanno dentro la string-array chiamata "modar" ossia modelli alfa romeo. Il problema sta nel fatto di come poter caricare un determinato string-array dal name che gli passo e così via...fino a presentare un'elenco di dati del tipo di auto scelto e la successiva tabella.... Non so se mi spiego....

             */

             
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

Le string-array dei modelli e degli anni relativi al modello selezionato sono i seguenti:

Codice (XML): [Seleziona]
 <string-array name="modar">
        <item></item>
        <item>145</item>
        <item>146</item>
        <item>147</item>
        <item>155</item>
        <item>156</item>
    </string-array>



<string-array name="annar">

        <item></item>
        <item>2001</item>
        <item>2000</item>
        <item>1999</item>
        <item>1998</item>
        <item>1997</item>
        <item>1996</item>
        <item>1995</item>
        <item>1994</item>

    </string-array>
Grazie per i possibili aiuti che mi fornirete!!

Grazie

Cristian

Offline criscap1985

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    GT-P5100
  • Sistema operativo:
    SlimKat (4.4.4)
Re:Caricamento secondo spinner in base all'item selezionato del primo
« Risposta #1 il: 27 Luglio 2015, 11:17:15 CEST »
0
Se non avete capito il mio problema...potevate chiedermelo no?    >:(

Offline criscap1985

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    GT-P5100
  • Sistema operativo:
    SlimKat (4.4.4)
Re:Caricamento secondo spinner in base all'item selezionato del primo
« Risposta #2 il: 08 Agosto 2015, 15:00:35 CEST »
0
Bene. Ottimo. Grazie della risposta.
Al prossimo topic.
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:Caricamento secondo spinner in base all'item selezionato del primo
« Risposta #3 il: 10 Agosto 2015, 12:10:27 CEST »
0
Devi impostare le operazioni in spinner_marca.setOnItemSelectedListener:
1) identificare la marca selezionata
2) la procedura per caricare il secondo spinner è identica al primo, devi solo filtrare i dati con quelli recuperati al punto 1

P.S.
periodo di vacanze, forum libero, ecc. mi sembra normale non avere risposte immediate.
« Ultima modifica: 10 Agosto 2015, 12:14:29 CEST da LonelyWolf »
Se la mia risposta ti è utile, per favore un thanks!

Offline pietroconti89

  • Utente normale
  • ***
  • Post: 164
  • Respect: +19
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note 3 N9005
  • Sistema operativo:
    Windows / Mac OSX
Re:Caricamento secondo spinner in base all'item selezionato del primo
« Risposta #4 il: 10 Agosto 2015, 14:19:33 CEST »
0
io faccio cosi , ti posto pari pari come lo uso io
primo passo creo una classe Spinner_menu.java che contenga tutti i valori
Codice (Java): [Seleziona]
public class Spinner_menu {
    public String defaultTipologia="Seleziona Una Tipologia";
    public String defaultCategoria="Seleziona Una Categoria";
    public List<String> Categoria;
    public List<String> Tipologia;
    public List Spinner_categoria(){
        Categoria=new ArrayList<String>();
        Categoria.add(defaultCategoria);
        Categoria.add("Abbigliamento/Accessori/scarpe");
        Categoria.add("Alimentare");
        Categoria.add("Animali");
        Categoria.add("Casa / Arredamenti");
        Categoria.add("Elettronica / Assistenza");
        Categoria.add("Riparazioni");
        Categoria.add("Salute Benessere");
        Categoria.add("Utenze Pubbliche/Private");
        return Categoria;
    }
    public List Spinner_tipologia_null() {
        Tipologia=new ArrayList<String>();
        Tipologia.add(defaultTipologia);
        return Tipologia;
    }

    public List Spinner_tipologia_Riparazioni() {
        Tipologia=new ArrayList<String>();
        Tipologia.add(defaultTipologia);
        Tipologia.add("Elettricista");
        Tipologia.add("Giardiniere");
        Tipologia.add("Gommista");
        Tipologia.add("Idraulico");
        Tipologia.add("Meccanico");
        return Tipologia;
    }
    public List Spinner_tipologia_salutebenessere() {
        Tipologia=new ArrayList<String>();
        Tipologia.add(defaultTipologia);
        Tipologia.add("Barbiere");
        Tipologia.add("Centro Benessere");
        Tipologia.add("Estetista");
        Tipologia.add("Palestra");
        Tipologia.add("Parrucchiere");
        Tipologia.add("Profumeria");
        Tipologia.add("SPA");
        Tipologia.add("Visagista");
        return Tipologia;
    }
    public List Spinner_tipologia_Alimentare(){
        Tipologia=new ArrayList<String>();
        Tipologia.add(defaultTipologia);
        Tipologia.add("Agriturismo");
        Tipologia.add("Alimentari");
        Tipologia.add("Bar");
        Tipologia.add("Discount");
        Tipologia.add("Enoteca");
        Tipologia.add("Fast Food");
        Tipologia.add("Gelateria");
        Tipologia.add("Ristorante");
        Tipologia.add("Macelleria");
        Tipologia.add("Panificio");
        Tipologia.add("Pasticceria");
        Tipologia.add("Pescheria");
        Tipologia.add("Pizzeria");
        Tipologia.add("Pub");
        Tipologia.add("Ristorante");
        Tipologia.add("Ristorante / Pizzeria");
        Tipologia.add("Supermercato");
        Tipologia.add("Takeway");
        Tipologia.add("Tavola Calda");
        Tipologia.add("Trattoria");
        Tipologia.add("Ristorante");
        Tipologia.add("Bar");
        return Tipologia;
    }

}
ora leggili cosi sono due spinner il primo categoria e il secondo tipologia
al variare di Categoria , ipologia avrà un diverso tipo di risultato ... a seguire il codice
ipotiziamo che siamo in Main.java
Codice (Java): [Seleziona]
 
        Spinner_menu S = new Spinner_menu();
        String Categoria=S.defaultCategoria;
        String Tipologia=S.defaultTipologia;
        Spinner SpinnerCategoria = (Spinner) view.findViewById(R.id.spinner_categoria2);
        final Spinner SpinnerTipologia = (Spinner) view.findViewById(R.id.spinner_tipologia2);
        ArrayAdapter<String> adapterCategoria = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item,
                S.Spinner_categoria());
        SpinnerCategoria.setAdapter(adapterCategoria);
        SpinnerCategoria.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Categoria = (String) parent.getItemAtPosition(position);
                Log.e("Selezionato: ", Categoria);
                ArrayAdapter<String> adapterTipologia = null;
                if (Categoria.equals("Seleziona Una Categoria"))
                    adapterTipologia = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item,
                            S.Spinner_tipologia_null());
                if (Categoria.equals("Alimentare")) {
     
                    adapterTipologia = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item,
                            S.Spinner_tipologia_Alimentare());
                }
                if (Categoria.equals("Salute Benessere"))
                    adapterTipologia = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item,
                            S.Spinner_tipologia_salutebenessere());
                SpinnerTipologia.setAdapter(adapterTipologia);
                SpinnerTipologia.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                        Tipologia = (String) parent.getItemAtPosition(position);
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {
                    }
                });
            }
a questo punto nelle variabili
Tipologia e Categoria
ti trovi i valori selezionati
saluti