2015-08-24 90 views
0

我有以下方法應讀取給定的URL與圖像和返回圖像作爲位圖。我實現了方法Volley功能,該功能在請求期間應該在給定的ImageView中顯示進度或錯誤圖標。Android + Volley:如何在加載過程中將圖像圖標設置爲ImageView?

/** 
* Processing Image request and gets the image with given URL 
*/ 
public Bitmap makeImageRequest(String url, ImageView imageView) { 
    //TODO: resolve issue with BitmapLruCache 
    ImageLoader il = new ImageLoader(queue, new LruBitmapCache()); 
    il.get(url, ImageLoader.getImageListener(
      imageView, R.drawable.ic_media_play, R.drawable.ic_media_pause)), new ImageLoader.ImageListener() { 
     @Override 
     public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) { 
      if(response.getBitmap() != null) { 
       mBitmap = processImageResponse(response); 
       Logger.i("Image successfully loaded"); 
      } 
     } 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      Logger.e("Image cannot be loaded"); 
      Logger.e(error.getMessage()); 
      VolleyLog.d(Constants.Global.ERROR, "Error: " + error.getMessage()); 
      mBitmap = null; 
     } 
    }); 
    return mBitmap; 
} 

問題是Android工作室在ImageListener方法的末尾發生錯誤。錯誤說:

}); 

; is expected 

我應該怎麼做才能更新該方法以正確工作?

非常感謝您的任何建議。

回答

0

- 我重寫此答案 -

ImageLoader.get接受兩個參數:requestUrl(一個String對象)和listener(一個ImageLoader.ImageListener對象)。

我想你應該從代碼中刪除ImageLoader.getImageListener(imageView, R.drawable.ic_media_play, R.drawable.ic_media_pause)),

il.get(url, new ImageLoader.ImageListener() { 
    @Override 
    public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) { 
     if(response.getBitmap() != null) { 
      mBitmap = processImageResponse(response); 
      Logger.i("Image successfully loaded"); 
     } 
    } 

    @Override 
    public void onErrorResponse(VolleyError error) { 
     Logger.e("Image cannot be loaded"); 
     Logger.e(error.getMessage()); 
     VolleyLog.d(Constants.Global.ERROR, "Error: " + error.getMessage()); 
     mBitmap = null; 
    } 
}); 

或者如果你想使用默認ImageListener實施,刪除ImageLoader.ImageListener實例。您可以使用此默認ImageListener指定加載圖標和錯誤圖標。

il.get(url, ImageLoader.getImageListener(imageView, R.drawable.ic_media_play, R.drawable.ic_media_pause)); 
+0

去除clocing托架我得到錯誤後: 無法解析方法得到 錯誤:(94,11)錯誤:找不到合適的方法get(String,ImageListener,<匿名ImageListener>) 方法ImageLoader.get(String,ImageListener,int,int,ScaleType)不適用 (實際和正式參數列表長度不同) 方法ImageLoader.get(String,ImageListener,int,int)不適用 和正式參數列表的長度不同) 方法ImageLoader.get(String,ImageListener)不適用 (實際和正式參數列表長度不同) – redrom

+0

@redrom我重寫了我的答案。 – hata

+0

是的,此更新正在工作,但我如何設置狀態圖標? – redrom

0

有不必要的字符 「)」 在

ImageLoader.getImageListener(
     imageView, R.drawable.ic_media_play, R.drawable.ic_media_pause)) 

請嘗試:

/** 
* Processing Image request and gets the image with given URL 
*/ 
public Bitmap makeImageRequest(String url, ImageView imageView) { 
    //TODO: resolve issue with BitmapLruCache 
    ImageLoader il = new ImageLoader(queue, new LruBitmapCache()); 
    il.get(url, ImageLoader.getImageListener(
      imageView, R.drawable.ic_media_play, R.drawable.ic_media_pause), new ImageLoader.ImageListener() { 
     @Override 
     public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) { 
      if(response.getBitmap() != null) { 
       mBitmap = processImageResponse(response); 
       Logger.i("Image successfully loaded"); 
      } 
     } 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      Logger.e("Image cannot be loaded"); 
      Logger.e(error.getMessage()); 
      VolleyLog.d(Constants.Global.ERROR, "Error: " + error.getMessage()); 
      mBitmap = null; 
     } 
    }); 
    return mBitmap; 
} 
+0

不工作,似乎params不適用於獲取方法。 – redrom

相關問題