Autore Topic: ProgressBar row listview  (Letto 1422 volte)

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
ProgressBar row listview
« il: 22 Novembre 2013, 23:16:17 CET »
0
Stò cercando inserire una progress bar per ogni row della ListView (ListAdapter) che dovrà progredire in base alla % calcolata.
L'errore nel Log viene segnalato a questa riga:
Codice (Java): [Seleziona]
value = d.valore1 / totaleE *100;                              
        int valore_barra = (int) Math.round(value);
        ProgressBar myprogressbar = (ProgressBar)findViewById(R.id.progressBar1);
        Resources res = getResources();
        Rect bounds = myprogressbar.getProgressDrawable().getBounds();   //ERRORE

Offline rs94

  • Utente normale
  • ***
  • Post: 227
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson Xperia Arc S
  • Sistema operativo:
    Windows 8
Re:ProgressBar row listview
« Risposta #1 il: 22 Novembre 2013, 23:26:05 CET »
0
Che tipo di errore? NullPointerException?
L'unica certezza è il dubbio.
Dubitare di se stessi è il primo segno di intelligenza.

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:ProgressBar row listview
« Risposta #2 il: 22 Novembre 2013, 23:27:21 CET »
0
si

Offline rs94

  • Utente normale
  • ***
  • Post: 227
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson Xperia Arc S
  • Sistema operativo:
    Windows 8
Re:ProgressBar row listview
« Risposta #3 il: 23 Novembre 2013, 11:49:45 CET »
0
Prova a spezzare myprogressbar.getProgressDrawable().getBounds(); in più righe e specifica quale dà il nullpointer, cioè se è null myprogressbar o getprogressdrawable
L'unica certezza è il dubbio.
Dubitare di se stessi è il primo segno di intelligenza.

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:ProgressBar row listview
« Risposta #4 il: 23 Novembre 2013, 18:06:11 CET »
0
è molto strano ora ho questo errore:
Codice (Java): [Seleziona]
11-23 11:54:17.711: E/AndroidRuntime(2058):     at it.de.Elenco_c$2.getView(Elenco_c.java:180)che corrisponde a questo:
Codice (Java): [Seleziona]
 int valore = (int) Math.floor(value);
p.setProgress(valore);//ERRORE
forse quando faccio la conversione da double ad int sbaglio qualcosa?

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:ProgressBar row listview
« Risposta #5 il: 23 Novembre 2013, 18:13:40 CET »
0
Devi postare il log dell'errore, ERRORE non vuol dire niente senza log

Inviato dal mio Nexus 7 con Tapatalk 4
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:ProgressBar row listview
« Risposta #6 il: 23 Novembre 2013, 18:24:18 CET »
0
Codice (Java): [Seleziona]
java.lang.NullPointerException
11-23 12:20:48.030: E/AndroidRuntime(2258):     at it.de.Elenco_c$2.getView(Elenco_c.java:179)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.widget.AbsListView.obtainView(AbsListView.java:2177)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.widget.ListView.makeAndAddView(ListView.java:1840)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.widget.ListView.fillDown(ListView.java:675)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.widget.ListView.fillFromTop(ListView.java:736)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.widget.ListView.layoutChildren(ListView.java:1655)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.widget.AbsListView.onLayout(AbsListView.java:2012)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.View.layout(View.java:14289)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1076)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.View.layout(View.java:14289)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.View.layout(View.java:14289)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:349)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.View.layout(View.java:14289)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.View.layout(View.java:14289)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1976)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1730)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.Choreographer.doCallbacks(Choreographer.java:562)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.Choreographer.doFrame(Choreographer.java:532)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.os.Handler.handleCallback(Handler.java:730)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.os.Looper.loop(Looper.java:137)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at android.app.ActivityThread.main(ActivityThread.java:5103)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at java.lang.reflect.Method.invokeNative(Native Method)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at java.lang.reflect.Method.invoke(Method.java:525)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-23 12:20:48.030: E/AndroidRuntime(2258):     at dalvik.system.NativeStart.main(Native Method)

Offline rs94

  • Utente normale
  • ***
  • Post: 227
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson Xperia Arc S
  • Sistema operativo:
    Windows 8
Re:ProgressBar row listview
« Risposta #7 il: 23 Novembre 2013, 23:35:38 CET »
0
l'errore non è, in teoria, su valore ma sulla variabile p (cioè la progressbar). Posta tutto il codice dell'adapter
L'unica certezza è il dubbio.
Dubitare di se stessi è il primo segno di intelligenza.

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:ProgressBar row listview
« Risposta #8 il: 24 Novembre 2013, 00:07:21 CET »
0
eccolo:
Codice (Java): [Seleziona]
ListAdapter adapter = new ArrayAdapter<Dettaglio>(this, R.layout.dettaglio, R.id.tv_totale_group, dettagli){
                       
                        @Override
                        public View getView(int position, View convertView, ViewGroup parent) {
                                View row = super.getView(position, convertView, parent);
                               
                                                               
                                TextView tvEn, tvCaa, tvPer;
                                tvEn = (TextView) row.findViewById(R.id.tv_to_group);
                                tvCaa = (TextView) row.findViewById(R.id.tv_cat_group);
                                tvPer = (TextView) row.findViewById(R.id.tv_perc_cat);                 
                               
                                Dettaglio d = dettagli.get(position);
                                                               
                                tvCaa.setText(d.categorie+"");
                               
                                double value = Double.valueOf(d.en);
                                NumberFormat formatter = NumberFormat.getCurrencyInstance();
                                String en = formatter.format(value );
                                tvEn.setText(en+"");
                               
                                //calcolo percentuale-------------------------
                                double totaleE = 0;
                                for (Dettaglio c : dettagli){
                                        totaleE += c.en;
                                }
                               
                                value = d.en / totaleE *100;                                   
                               
                                 DecimalFormat decimalFormat = new DecimalFormat("0.#");
                                 String en1 = decimalFormat.format(value );  
                                 tvPer.setText(en1+"%");
                                //fine-----------------------------------------
                                 //INIZIO PER PROGRESS BAR SULLE ROW--------------------------------------------
                       
                                 int valore_per_barra = (int) Math.floor(value);
                            p.setProgress(valore_per_barra);
                         
                                //fine-----------------------------------------
                                return row;
                        }
                };
                               
                lista.setAdapter(adapter);     
« Ultima modifica: 24 Novembre 2013, 00:22:11 CET da C_G »

Offline rs94

  • Utente normale
  • ***
  • Post: 227
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson Xperia Arc S
  • Sistema operativo:
    Windows 8
Re:ProgressBar row listview
« Risposta #9 il: 24 Novembre 2013, 10:36:44 CET »
0
Dove è dichiarata la variabile p (la progressbar)?
L'unica certezza è il dubbio.
Dubitare di se stessi è il primo segno di intelligenza.

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:ProgressBar row listview
« Risposta #10 il: 24 Novembre 2013, 10:53:35 CET »
0
Prima l'avevo dichiarata nel metodo getView,
poi pensando che poteva essere un problema l'ho dichiarata nell'onCreate.

Dopo 1 giorno ancora non si capisce perchè si comporta come se non vede la progressBar.
Ho controllato e ricontrollato l'id del file xml diverse volte.....