Autore Topic: Drawable della progress sparisce su refresh  (Letto 563 volte)

Offline matteo.pizzorni

  • Utente junior
  • **
  • Post: 65
  • Respect: +2
    • Mostra profilo
Drawable della progress sparisce su refresh
« il: 14 Novembre 2012, 10:42:38 CET »
0
Buongiorno,
ho un semplice custom cursor adpater per una lisview. Gli item della listview contengono una progressbar orizzontale. Questa barra, secondo il progress dovrebbe cambiare il colore.
Ho 4 drawable di diversi colori. Come si vede nel codice allegato, a seconda del valore si va da azzurro a rosso. Il problema è che all'apertura tutto funziona correttamente, ma scorrendo la lista avanti e indietro il rpogressdrawable della barra è come se si annullasse. Allego anche immagini del prima e dopo scorrimento.
Se necessario posto anche il codice della listview e gli xml
Codice (XML): [Seleziona]
package mpizzorni.software.gymme.diari.intensita;

import mpizzorni.software.gymme.R;
import mpizzorni.software.gymme.preferences.Opzioni;
import android.content.Context;
import android.database.Cursor;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.ProgressBar;
import android.widget.TextView;

public class AdapterListaVolumiGruppi extends CursorAdapter {
        private LayoutInflater mLayoutInflater;
        Context mContext;
        Opzioni opzioni;

        public AdapterListaVolumiGruppi(Context context, Cursor c) {
                super(context, c);
                mContext = context;
                mLayoutInflater = LayoutInflater.from(context);
                opzioni = new Opzioni(mContext);
        }

        @Override
        public View newView(Context context, Cursor cursor, ViewGroup parent) {
                View v = mLayoutInflater.inflate(R.layout.volume_per_gruppi_lista_riga,
                                parent, false);
                return v;
        }

        @Override
        public void bindView(View v, Context context, Cursor c) {
                String data = c.getString(c.getColumnIndex("DATA"));
                int pesoTotSerie = (int) (c.getDouble(c
                                .getColumnIndex("PESO_TOT_SERIE")));
                String desGruppo = c.getString(c.getColumnIndex("DES_GRUPPO"));

                TextView tvDataDiario = (TextView) v.findViewById(R.id.tvDataDiario);
                tvDataDiario.setText(data);

                ProgressBar pbVolume = (ProgressBar) v.findViewById(R.id.pbVolume);
                pbVolume.setProgressDrawable(coloreBarra(pesoTotSerie));
                pbVolume.setProgress(pesoTotSerie);

                TextView tvDescrizione = (TextView) v.findViewById(R.id.tvDescrizione);
                tvDescrizione.setText(pesoTotSerie + " " + opzioni.umPeso());

                TextView tvDesGruppo = (TextView) v.findViewById(R.id.tvDesGruppo);
                tvDesGruppo.setText(desGruppo);
        }

        private Drawable coloreBarra(int val) {
                Drawable barra = null;

                if (val < 2000) {
                        barra = mContext.getResources().getDrawable(
                                        R.drawable.barra_orizzontale_azzurra);
                }
                if (val >= 2000 && val < 5000) {
                        barra = mContext.getResources().getDrawable(
                                        R.drawable.barra_orizzontale_verde);
                }
                if (val >= 5000 && val < 8000) {
                        barra = mContext.getResources().getDrawable(
                                        R.drawable.barra_orizzontale_gialla);
                }
                if (val >= 8000) {
                        barra = mContext.getResources().getDrawable(
                                        R.drawable.barra_orizzontale_rossa);
                }
                return barra;
        }
}
grazie

Offline matteo.pizzorni

  • Utente junior
  • **
  • Post: 65
  • Respect: +2
    • Mostra profilo
Re:Drawable della progress sparisce su refresh
« Risposta #1 il: 16 Novembre 2012, 09:20:59 CET »
+1
Ciao, ho risolto modificando il pezzo relativo alla gestione della pbar: prima salvo i limiti e poi li reimposto in questo modo:

Codice (Java): [Seleziona]
                ProgressBar pbVolume = (ProgressBar) v.findViewById(R.id.pbVolume);
                Rect limiti = pbVolume.getProgressDrawable().getBounds();
                pbVolume.setProgressDrawable(coloreBarra(pesoTotSerie));
                pbVolume.getProgressDrawable().setBounds(limiti);
                pbVolume.setProgress(pesoTotSerie);