Autore Topic: Anno e mese in corso  (Letto 434 volte)

Offline Kris

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Mostra profilo
Anno e mese in corso
« il: 29 Settembre 2013, 17:43:00 CEST »
0
All'avvio dell'activity devo visualizzare in uno spinner l'anno ed il mese corrente in base ai dati presenti nel db sqlite (cioè se ad esempio ci sono dati solo del mese di Agosto 2013 deve visualizzare 2013-08).

Ho questo codice per prelevare i dati dal calendario, però all'avvio si posiziona su Gennaio, cioè (2013-01)
Codice (Java): [Seleziona]
years = ottieniAnni();
               
               
                //Se non c'è niente aggiungo l'anno corrente
                if (years.size() == 0){
                        int currentYear = Calendar.getInstance().get(Calendar.YEAR);
                        int currentMonth = Calendar.getInstance().get(Calendar.MONTH) + 1;
                        years.add(currentYear+" / "+currentMonth);
                }
               
                SpinnerAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, years);
               
                yearSelector.setAdapter(adapter);
                yearSelector.setSelection(0);
                yearSelector.setOnItemSelectedListener(new OnItemSelectedListener() {

                        @Override
                        public void onItemSelected(AdapterView<?> adapterView, View view,
                                        int position, long id) {
                                String anno = years.get(position);
                               
                                showDetails(anno);
                        }

                        @Override
                        public void onNothingSelected(AdapterView<?> arg0) {
                                return;

invece con questa stringa sql seleziono i dati dal db
Codice (Java): [Seleziona]
private List<String> ottieniAnni(){
                List<String> result = new LinkedList<String>();
........
String sql = "SELECT DISTINCT strftime('%Y-%m',"+GiTable.DATA+") FROM "+GiTable.TABLE_NAME;
........
« Ultima modifica: 29 Settembre 2013, 17:44:46 CEST da Kris »

Offline emi

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    S III
Re:Anno e mese in corso
« Risposta #1 il: 24 Ottobre 2013, 20:21:16 CEST »
0
Ad occhio credo che il problema possa essere la query giusto? (nel senso che hai dati nel db ma ti ritorna gennaio?)

io per la query avrei fatto:
Codice (Java): [Seleziona]
 public Cursor fetchAllDays() {
                          String query = "SELECT *" +
                                      "FROM "+DaysTable.TABLE_NAME+" "+
                                                  "ORDER BY "+DaysTable.DATA+" DESC";
                          return database.rawQuery(query,null);
            }
       

e te li mette in ordine crescente e invece di fargli ritornare tutte le righe che ha trovato con cursor.getString(1) ritorni solo il primo campo ad esempio anno e con cursor.getString(2) il secondo campo cioè mese.