2010-07-06 71 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

相关问题