'refresh' Activity

di il
9 risposte

'refresh' Activity

Ciao a tutti in una activity inserisco i dati nel db, e nella main visualizzo il risultato di una query.
in pratica per visualizzare il risultato della query devo chiudere e riaprire l'app. Esiste un metodo per fare una specie di refresh quando dalla seconda activity torno alla main??

9 Risposte

  • Re: 'refresh' Activity

    Dovresti provare a mettere nell' onResume la logica per rifare la query ed aggiornare la view..
  • Re: 'refresh' Activity

    Perfetto con onResume() quando passo da una activity all'altra
    Non funziona però se nella main inserisco un dato senza cambiare activity es.tramite datepick
  • Re: 'refresh' Activity

    In quel caso devi gestire manualmente tramite ascoltatori o simili (vedi il pattern observer).. Ad esempio nel caso del datepicker c'è il relativo OnDateChangedListener (con il quale devi stare attento perché viene chiamato 2 volte, non so se è un bug o meno)..
  • Re: 'refresh' Activity

    Ok
  • Re: 'refresh' Activity

    Ho un problema con double, in pratica se ad esempio in ingresso inserisco il valore 1000.30 con questo codice ho come uscita questo 1000.2999877929688
    come posso risolvere??ci stoò impazzendo!!
    
    private class Dettaglio {
            
            public double entrate, uscite;
            
        }
    
    private void showDetails(String anno){
            SQLiteDatabase db = new BilancioHelper(this).getReadableDatabase();
            final List<Dettaglio> dettagli = new ArrayList<Bilancio.Dettaglio>(12);
            
            for (int i=1; i<=12; i++){
                String mese;
                if (i<10){
                    mese = "0"+i;
                } else {
                    mese = ""+i;
                }
                String sql = "SELECT SUM(Entrata), SUM(Uscita) FROM Giornate WHERE data LIKE '"+anno+"-"+mese+"%'";
                Cursor c = db.rawQuery(sql, null);
                
                while (c.moveToNext()){
                    Dettaglio d = new Dettaglio();
                    d.entrate = c.getFloat(0);
                    d.uscite = c.getFloat(1);
                    
                    dettagli.add(d);
                }
                c.close();
            }
            
            db.close();
            
            ListAdapter adapter = new ArrayAdapter<Dettaglio>(this, R.layout.dettaglio_row, R.id.tv_mese, dettagli){
                
                @Override
                public View getView(int position, View convertView, ViewGroup parent) {
                    View row = super.getView(position, convertView, parent);
                    
                    Log.v("Bilancio", "Creo elemento in posizione "+position);
                    
                    String month = new DateFormatSymbols(Locale.getDefault()).getMonths()[position];
                    TextView tvMonth = (TextView) row.findViewById(R.id.tv_mese);
                    tvMonth.setText(month);
                    
                    TextView tvEntrate, tvUscite;
                    tvEntrate = (TextView) row.findViewById(R.id.tv_entrata);
                    tvUscite = (TextView) row.findViewById(R.id.tv_uscita);
                    Dettaglio d = dettagli.get(position);
                    tvEntrate.setText(d.entrate+"");
                    tvUscite.setText(d.uscite+"");
                    return row;
                }
            };
            lista.setAdapter(adapter);
            
            //Calcolo il totale annuale
            double totaleE = 0d, totaleU = 0d;
            for (Dettaglio d : dettagli){
                totaleE += d.entrate;
                totaleU += d.uscite;
            }
            
            TextView riepilogoE = (TextView) findViewById(R.id.tv_riepilogo_entrate);
            TextView riepilogoU = (TextView) findViewById(R.id.tv_riepilogo_uscite);
            
            riepilogoE.setText(""+totaleE);
            riepilogoU.setText(""+totaleU);
        }
        
        private List<String> ottieniAnni(){
            List<String> result = new LinkedList<String>();
            
            SQLiteDatabase db = new BilancioHelper(this).getReadableDatabase();
            
            String sql = "SELECT DISTINCT strftime('%Y',"+GiornateTable.DATA+") FROM "+GiornateTable.TABLE_NAME;
            Cursor c = db.rawQuery(sql, null);
            
            while (c.moveToNext()){
                result.add(c.getString(0));
            }
            db.close();
            return result;
        }
    
  • Re: 'refresh' Activity

    È un problema dovuto al fatto che il numero di bit usati per la rappresentazione è finito. Evidentemente quel numero è quello che più si avvicina a ciò che vorresti te! Non penso che tu possa farci tanto purtroppo..
  • Re: 'refresh' Activity

    Infatti leggendo in rete mi sembrava così, ma te l'ho chiesto perchè magari avevi qualche soluzione particolare...
    Ora non mi resta che togliere double e far uscire un numero intero per evitare questo giusto??
    ho provato a modificare quella parte di codice ma senza risultato....posso semplicemente sostituire double con int??
  • Re: 'refresh' Activity

    kontos02 ha scritto:


    Infatti leggendo in rete mi sembrava così, ma te l'ho chiesto perchè magari avevi qualche soluzione particolare...
    Ora non mi resta che togliere double e far uscire un numero intero per evitare questo giusto??
    ho provato a modificare quella parte di codice ma senza risultato....posso semplicemente sostituire double con int??
    non puoi formattare il double a x cifre? in quel caso non dovresti avere problemi
  • Re: 'refresh' Activity

    Si, puoi formattarlo come suggerisce zak.. prova con
    
    double numero = 1000.2999877929688D;
    DecimalFormat df = new DecimalFormat("#.##");
    String numFormattato = df.format(numero).toString();
    
    A questo punto dovrebbe uscirti il numero correttamente formattato (in teoria anche arrotondato al decimale più vicino).
Devi accedere o registrarti per scrivere nel forum
9 risposte