Passare diverse query alla ListView

di il
5 risposte

Passare diverse query alla ListView

Ciao, tramite una AlertDialog faccio scegliere all'utente una determinata stringa. Siccome la scelta è tra 15 righe (12mesi dell'anno+3 righe in cui ci sono 1 trimestre,2 trimestre, 3 trimestre ), quando l'utente ne sceglie uno devo passare al Cursor la query che preleva i dati per quel determinato mese.

Secondo me ho 2 strade davanti: la prima è creare 15 metodi diversi (cosa orrenda), la seconda è creare un unico metodo, 15 diverse stringhe (es. String sql1 = "SELECT ecc...";), e passare al Cursor la stringa giusta.

Avete altre idee?? grazie

5 Risposte

  • Re: Passare diverse query alla ListView

    Secondo me sarebbe ancora meglio se la query fosse parametrica, in modo da utilizzare la stessa query ma cambiando solo il parametro
  • Re: Passare diverse query alla ListView

    Ho modificato la domanda.
    Consiglii?
  • Re: Passare diverse query alla ListView

    Secondo me potresti creare 2 metodi, uno per i mesi e uno per i trimestri. Per i mesi non c'è problema, basta che usi l'indice per indicare il mese. Per i trimestri invece ti tocca giocare un po' con gli indici per ottenere quello che ti serve.
    Nota comunque che i trimestri sono 4 in un anno, e non 3!
  • Re: Passare diverse query alla ListView

    Si si 4 trimestri, ho dimenticato di scriverlo nel post.

    Dunque ora scrivo tutto ciò che ho fatto fin ora:
    Array che butto nella dialog
    
    <string-array name="mesi">
            <item >Gennaio</item>
            <item >Febbraio</item>
            <item >Marzo</item>
            <item >Aprile</item>
            <item >Maggio</item>
            <item >Giugno</item>
            <item >Luglio</item>
            <item >Agosto</item>
            <item >Settembre</item>
            <item >Ottobre</item>
            <item >Novembre</item>
            <item >Decembre</item>
            <item >1° Trimestre</item>
            <item >2° Trimestre</item>
            <item >3° Trimestre</item>
            <item >4° Trimestre</item>
            <item >1° Semestre</item>
            <item >2° Semestre</item>
            <item >Tutti i mesi</item>
        </string-array>
    
    array dal quale prendo la stringa corrispondente al mese per la query:
    
    <string-array name="numero_mesi">
            <item >01</item>
            <item >02</item>
            <item >03</item>
            <item >04</item>
            <item >05</item>
            <item >06</item>
            <item >07</item>
            <item >08</item>
            <item >09</item>
            <item >10</item>
            <item >11</item>
            <item >12</item>
            <item >13</item>
            <item >14</item>
            <item >15</item>
            <item >16</item>
            <item >17</item>
            <item >18</item>
            <item >19</item>
        </string-array>
    
    dialog:
    
     private void AlertMesi() {
            final int meseChoice = Integer.parseInt(mese_query)-1;
    
            final String[] mesi = getResources().getStringArray(R.array.mesi);
            final String[] mesi_valore = getResources().getStringArray(R.array.numero_mesi);
    
    ContextThemeWrapper themedContext = new ContextThemeWrapper(getActivity(), android.R.style.Theme_Holo_Light);
    
            AlertDialog.Builder builder = new AlertDialog.Builder(themedContext);
            builder.setTitle("Seleziona mese o periodo");
            builder.setSingleChoiceItems(mesi, meseChoice,
            new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int item) {
          //setto il nome del mese nel bottone
           btnMese.setText(mesi[item]);
          //assegno alla stringa mese_query il valore corrispondente al mese per la query
          mese_query = mesi_valore[item];
         //se il mese scelto è superiore a dicembre cambio metodo
                            if (meseChoice <= 11) {
                                System.out.println(" "+meseChoice);
                                dialog.cancel();
                                listaOperatori();
                                listaServizi();
                                return;
                            }
                           if (meseChoice == 12) {
                                listaOperatori_1Trimestre();
                                Toast.makeText(getActivity(), "listaOperatori_1Trimestre()", Toast.LENGTH_SHORT).show();
                                dialog.dismiss();
                                return;
                            }
    
                        }
                    });
            builder.setNegativeButton("Annulla", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.dismiss();
                }
            });
            AlertDialog alert = builder.create();
            alert.show();
        }
    
    fino al click su Dicembre (11) tutto funziona bene,
    ora pero se meseChoice == 12 quell'if non viene letto, ho messo un Toast per verifica e non viene letto. Cosa sbaglio??
  • Re: Passare diverse query alla ListView

    Secondo me dovresti provare ad usare le funzioni di debug per vedere cosa succede quando selezioni un mese.

    Comunque l'unico punto in cui assegni un valore a meseChoice è alla prima riga, dove vedo un "-1". Io controllerei quella riga e il momento in cui setti mese_query
Devi accedere o registrarti per scrivere nel forum
5 risposte