2011-07-31 10 views
3

ProgressBarsetProgressDrawableをカスタムカラーで使用すると、正しい方法では機能しません。 ListViewの行にプログレスバーを使用しますが、進行状況はリストに複数の要素がある場合にのみ表示されます。 1つの要素の場合、プログレスバーは空です。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> 
このコードで間違って何

、なぜそれが内に複数の要素がある場合にのみ動作しますリスト?カスタムProgressBarスタイルを設定しないと、すべてが正常に動作しています。 setProgressDrawableメソッドは問題を引き起こすようです。

ご協力いただきありがとうございます。

答えて

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

ありがとうございました。独自のプログレスバーを実装することで問題を解決しました。 – Dekar

+0

これは明らかなバグを解決しました。ありがとう –

関連する問題