2010-07-06 78 views
0

我相信這是相當平凡的,但我無法讓它工作。
我想在圖庫元素(ImageViews)中顯示默認圖像,而它們的實際圖像是從網上獲取的。
現在,沒有顯示ImageView的圖像尚未到達。一旦到達,立即顯示。
我試圖在ImageView的實例化後立即調用其setImageResource函數,如下所示:Android:在實際圖像下載時在圖庫的ImageView中顯示默認圖像

final ImageView i = new ImageView(mContext);
i.setImageResource(R.drawable.loading);

但它似乎沒有工作。下面是完整的getView()函數。
任何幫助表示讚賞。
謝謝。

public View getView(int position, View convertView, ViewGroup parent) { 

    final ImageView i = new ImageView(mContext); 
    i.setImageResource(R.drawable.loading); 


    // if the drawbale is in the buffer - fetch it from there 
    Drawable bufferedImage = DataManager.getInstance().getImagesBuffer()[position]; 
    if (bufferedImage != null){ 
     i.setImageDrawable(bufferedImage); 

     BitmapDrawable drawable = (BitmapDrawable) i.getDrawable(); 
     drawable.setAntiAlias(true); 
    } 
    // if drawable is not in buffer - fetch it from the net via AsyncImageLoader 
    else 
    { 

     String imageUrl = DataManager.getInstance().getImageBufferInstance().getImageUrl(position); 
     Drawable downloadedImage = AsyncImageLoader.getInstance().loadDrawable(imageUrl, new ImageCallback() { 
     public void imageLoaded(Drawable imageDrawable, String imageUrl) { 

       if (imageDrawable == null) 
       { 
        imageDrawable = getResources().getDrawable(R.drawable.icon); 
       } 
       i.setImageDrawable(imageDrawable); 

       BitmapDrawable drawable = (BitmapDrawable) i.getDrawable(); 
       drawable.setAntiAlias(true);  

       } 
      }); 

     i.setImageDrawable(downloadedImage); 
    } 

    i.setLayoutParams(new CoverFlow.LayoutParams(Utils.getInstance().getScreenWidth()/2, 
      Utils.getInstance().getScreenHeight()/2)); 
    i.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 


    return i; 


} 

回答

0

解決您的壓痕......如果我正確讀取,你只設置你的(未顯示)AsyncImageLoader,的imageLoaded回調臨時繪製圖標我假設意味着它則僅是在圖像下載之後設置,然後立即被下載的圖像覆蓋。嘗試將佔位符設置代碼移到回調之外的其他塊中。

+0

Yoni,非常感謝您的關注(如果我的縮進使代碼不清楚,那麼很抱歉...)。您的洞察力幫助我瞭解變量downloadedImage爲空,並且我在i.setImageDrawable(downloadedImage)中將null設置爲imageView。這就是爲什麼我在imageView中看不到任何東西。一旦回調開始,它將設置我與實際圖像,它出現在屏幕上。而不是做i.setImageDrawable(downloadedImage)我應該問如果downloadImage是空的。如果是這樣,請使用默認圖像設置我。如果不是,請使用downloadImage進行設置。再次感謝您的幫助。 – Rob 2010-07-07 14:01:54

相關問題