2011-07-31 5 views
3

L'utilisation de setProgressDrawable pour un ProgressBar avec des couleurs personnalisées ne fonctionne pas correctement pour nous. Nous utilisons des barres de progression dans les lignes d'un ListView, mais la progression n'est affichée que s'il y a plus d'un élément dans la liste. Dans le cas d'un élément, la barre de progression est vide.Problème lié à l'utilisation de ProgressBar.setProgressDrawable

CursorAdapter.java:

public class CursorAdapter extends SimpleCursorAdapter { 
    public CursorAdapter(Context context, int layout, Cursor c, String[] from, 
      int[] to) { 
     super(context, layout, c, from, to); 
    } 

    public void bindView(View view, Context context, Cursor cursor) { 
     super.bindView(view, context, cursor); 
     updateProgressbar(view, cursor); 
    } 

    /** 
    * This method updates the progressbar using the "numberpages" and 
    * "currentpage" values. 
    */ 
    private void updateProgressbar(View view, Cursor cursor) { 
     ProgressBar progressBar = (ProgressBar) view 
       .findViewById(R.id.progressbarHorizontal); 

     progressBar.setProgressDrawable(view.getResources().getDrawable(
       R.drawable.greenprogress)); 

     progressBar.setMax(cursor.getInt(cursor.getColumnIndex("numberpages"))); 
     progressBar.setProgress(cursor.getInt(cursor 
       .getColumnIndex("currentpage"))); 
    } 

} 

/res/drawable/greenprogress.xml:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@android:id/background"> 
    <shape> 
     <corners android:radius="5dip" /> 
     <gradient 
       android:startColor="#ff9d9e9d" 
       android:centerColor="#ff5a5d5a" 
       android:centerY="0.75" 
       android:endColor="#ff747674" 
       android:angle="270" 
     /> 
    </shape> 
</item> 

<item android:id="@android:id/secondaryProgress"> 
    <clip> 
     <shape> 
      <corners android:radius="5dip" /> 
      <gradient 
        android:startColor="#80ffd300" 
        android:centerColor="#80ffb600" 
        android:centerY="0.75" 
        android:endColor="#a0ffcb00" 
        android:angle="270" 
      /> 
     </shape> 
    </clip> 
</item> 

<item android:id="@android:id/progress"> 
    <clip> 
     <shape> 
      <corners 
       android:radius="5dip" /> 
      <gradient 
       android:startColor="#33FF33" 
       android:endColor="#008000" 
       android:angle="270" /> 
     </shape> 
    </clip> 
</item> 

</layer-list> 

Quel est le problème avec ce code et pourquoi il ne fonctionne que s'il y a plus d'un éléments la liste? Sans définir un style ProgressBar personnalisé, tout fonctionne correctement. La méthode setProgressDrawable semble poser problème.

Merci de votre aide.

Répondre

5
private void updateProgressbar(View view, Cursor cursor) { 
     ProgressBar progressBar = (ProgressBar) view 
       .findViewById(R.id.progressbarHorizontal); 

     progressBar.setProgressDrawable(view.getResources().getDrawable(
       R.drawable.greenprogress)); 

> progressBar.setProgress(1); "Add this statement before setting the progress.." 

     progressBar.setMax(cursor.getInt(cursor.getColumnIndex("numberpages"))); 
     progressBar.setProgress(cursor.getInt(cursor 
       .getColumnIndex("currentpage"))); 
    } 
+0

Nous vous remercions de votre réponse. Nous avons résolu le problème en mettant en place notre propre barre de progression. – Dekar

+0

Cela a résolu le bug apparent pour moi. Merci –