2011-06-21 2 views
0

過去2日間から、私は新しいのでブラックベリーのウェブイメージでリストフィールドをやっています。 私はリストフィールドをいくつかのデフォルトイメージで表示しています。私は実際のイメージをデフォルトイメージで置き換えることはできません。私はイメージを1つずつ読み込みます。助けてください。私のコードはリストフィールドの です。ダウンロードしたイメージをブラックベリーリストフィールドにデフォルトイメージで上書きする方法

public void drawListRow(ListField listField,final Graphics graphics,int index, 
     final int y, int width) 
{ 
    this.graphics=graphics; 
    this.inde=index; 
    class ImageDowload extends Task 
    { 

     void doTask() 
     { 

      load=new DowloadImage(picture[inde]); 
      if(load.getData()!=null) 
      { 
       _bmap=load.getBitmap(); 

       graphics.drawBitmap(3,y+7,placeholder.getWidth(), placeholder.getHeight(),_bmap, 0, 0); 
      } 


     } 



    } 

    taskWorker.addTask(new ImageDowload()); 

    String text=(String) get(listField, index); 
String pricedetails=price[index]; 
    graphics.setColor(rgb); 
    graphics.setFont(Utility.getBigFont(DConfig.getFSize()+4)); 
    graphics.drawBitmap(3,y+7,placeholder.getWidth(), placeholder.getHeight(),placeholder, 0, 0); 
graphics.drawText(text,100,y+25); 
graphics.drawText(pricedetails+" $",420,y+25); 
graphics.drawLine(0, y+74, DConfig.disWidth, y+74); 

} 

答えて

1

あなたは間違いなく、再描画する必要がありますたびに発射するだろうとして、あなたの、drawListRow()に尋ねる置くことにしたくありません。

ListFieldを作成するとき(または意味があるときはいつでも)、すべての画像のダウンロードを開始するだけです。 drawListRow()ビットマップをペイントするときは、ダウンロードしたものが存在するかどうかを確認し、描画している場合はデフォルトを描画しないでください。各画像のダウンロードが完了すると、ListField invalidate()が新しくダウンロードされた画像を描画します。

+0

任意のコード例を提供できます – koti

+0

'DownloadImage'タスクと' taskWorker.addTask() '呼び出しをコンストラクタに移動し、それらをHashtableなどに保存してください。次に 'drawListRow()'に 'ht.get(key)'に何かがあるかどうかを確認してください。描画していない場合は、デフォルトを描画します。あなたのコードが実際にどのように動作しているかわからなければ、これはかなりの量のコードになる可能性があります – jprofitt

+0

ありがとうございました。 – koti