Autore Topic: Richiama metodo  (Letto 627 volte)

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Richiama metodo
« il: 02 Febbraio 2014, 19:39:43 CET »
0
Sto visualizzando un grafico a torta con i dati prelevati dal database. La query del database ha clausola WHERE con l'anno scelto da un Spinner. All'apertura del Fragment tutto funziona bene, ma se si cambia l'anno dallo Spinner i nuovi dati vengono visualizzati ma il grafico non viene aggiornato. Ho provato con onResume (), ma non funziona, avete qualche suggerimento? grazie
Codice (Java): [Seleziona]
private void grafico(String anno){
        // Pie Chart Section Names
        String[] code = new String[] {"A", "B"};        

        // Color of each Pie Chart Sections
        int[] colors = { Color.rgb(153,204,0), Color.rgb(255,68,68)};

        SQLiteDatabase db = new ResgistroSpeseHelper(getActivity()).getReadableDatabase();

        String sql = "SELECT SUM(a), SUM(b) FROM table WHERE data LIKE '"+anno+"%'";
    Cursor c = db.rawQuery(sql, null);

            while (c.moveToNext()){

                double a_ = c.getDouble(0);
                double b_ = c.getDouble(1);

                double somma = b_ + a_;

                double perc_1 = (a_ / somma) * 100;
                double perc_2 = (b_ / somma) * 100;

                // Pie Chart Section Value
                double[] distribution = { perc_2, perc_1 } ;

            // Instantiating CategorySeries to plot Pie Chart      
            CategorySeries distributionSeries = new CategorySeries(" Android version distribution as on October 1, 2012");
            for(
                int i=0 ;
                    i < distribution.length;
                    i++){
                // Adding a slice with its values and name to the Pie Chart
                distributionSeries.add(code[i], distribution[i]);
                //distributionSeries.add(perc_entrate);
            }  

            // Instantiating a renderer for the Pie Chart
            DefaultRenderer defaultRenderer  = new DefaultRenderer();      
            for(int i = 0 ;i<distribution.length;i++){          
                SimpleSeriesRenderer seriesRenderer = new SimpleSeriesRenderer();      
                seriesRenderer.setColor(colors[i]);
                seriesRenderer.setDisplayChartValues(true);
                // Adding a renderer for a slice
                defaultRenderer.addSeriesRenderer(seriesRenderer);
            }

            defaultRenderer.setLabelsTextSize (12);
            defaultRenderer.setLegendTextSize(22);

            defaultRenderer.setZoomButtonsVisible(true);                    

            // Getting PieChartView to add to the custom layout
            mChartView = ChartFactory.getPieChartView(getActivity(),distributionSeries, defaultRenderer);
            // Getting a reference to view group linear layout chart_container

            // Adding the pie chart to the custom layout
            chartContainer.addView(mChartView);
            }

            c.close();
            db.close();

 }

Codice (Java): [Seleziona]
@Override
    public void onResume(){
        years = ottieniAnni();
SpinnerAdapter adapter = new ArrayAdapter<String>(getActivity(), 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);
                grafico(anno);

            }

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

        });
         super.onResume();
    }
« Ultima modifica: 02 Febbraio 2014, 21:46:05 CET da C_G »

Offline crc_error

  • Utente junior
  • **
  • Post: 85
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    LG-P500
  • Sistema operativo:
    Windows 8, Ubuntu 12
Re:Richiama metodo
« Risposta #1 il: 03 Febbraio 2014, 11:05:45 CET »
0
Domanda stupida: sicuro che il cursore riempito dalla query sia all'inizio e che non sia nullo?


hai provato a mettere un:


Codice (Java): [Seleziona]
 if(c == null || !c.moveToFirst())
    Log.d("app", "problema sul cursore");

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:Richiama metodo
« Risposta #2 il: 03 Febbraio 2014, 18:41:54 CET »
0
Dunque, ho provato a vedere se il cursore è null come da te suggerito.
Non ho il messaggio nel Log ma e inserendo
Codice (Java): [Seleziona]
if(c == null || !c.moveToFirst()), rimane tutto uguale, quindi credo non sia quello, hai altri suggerimenti??
« Ultima modifica: 03 Febbraio 2014, 18:46:11 CET da C_G »

Offline crc_error

  • Utente junior
  • **
  • Post: 85
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    LG-P500
  • Sistema operativo:
    Windows 8, Ubuntu 12
Re:Richiama metodo
« Risposta #3 il: 03 Febbraio 2014, 21:15:44 CET »
+1
mmm.. difficile dirlo.. l'unica è provare a andare in debug e vedere perchè non viene ridisegnato.
Così senza poter metter mano al codice l'unica cosa che mi viene in mente è provare a mettere un breakpoint sullo "String[] code" e vai avanti step by step...

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:Richiama metodo
« Risposta #4 il: 03 Febbraio 2014, 22:35:23 CET »
0
no, è molto più semplice di quanto pensavamo...bastava rimuovere la View ed ho inserito il metodo removeView()
Codice (Java): [Seleziona]
chartContainer.removeView(mChartView);nel metodo onResume() e tutto funziona perfettamente.
Grazie per la tua disponibilità...alla prossima  ;-)
« Ultima modifica: 03 Febbraio 2014, 22:36:57 CET da C_G »

Offline crc_error

  • Utente junior
  • **
  • Post: 85
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    LG-P500
  • Sistema operativo:
    Windows 8, Ubuntu 12
Re:Richiama metodo
« Risposta #5 il: 03 Febbraio 2014, 23:50:31 CET »
0
Ottimo :)


Figurati ;)