我正在尝试使用Volley Library获取列表视图的图像。我使用以下方法创建了简单的HTTP帮助程序。
...
contactForm.on('submit', function(e) {
e.preventDefault();
$.ajax({...});
...
但问题是:
/**
* Processing Image request and gets the image with given URL
*/
public Bitmap makeImageRequest(String url) {
ImageLoader il = new ImageLoader(queue, new BitmapLruCache());
il.get(url, new ImageLoader.ImageListener() {
@Override
public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) {
mBitmap = processImageResponse(response);
}
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(Constants.Global.ERROR, "Error: " + error.getMessage());
mBitmap = null;
}
});
return mBitmap;
}
无法识别方法。
所以我尝试使用以下代码在URL上创建ImageLoader:
http://www.androidhive.info/2014/05/android-working-with-volley-library-1/
new BitmapLruCache()
但是在代码中我无法找到从哪里获得
ImageLoader imageLoader = AppController.getInstance().getImageLoader();
因为方法代码是从自定义
触发的AppController
使用:
从活动中调用public class HttpHelperClass
如何加载图片是正确的方法,我如何修复我的代码以获得成功请求?
非常感谢您的任何建议。
答案 0 :(得分:2)
我认为您的makeImageRequest
方法将始终返回null
,因为调用onResponse
或onErrorResponse
侦听器需要一些时间,但您返回mBitmap
不情愿地!
如果你想使用Volley ImageLoader
,你最好在你的活动中获得图像,或者......不要像你的HttpHelperClass
那样来自其他类。
同样AppController
是一个扩展Application
和的类,您应该自己创建。 (它位于AndroidHive链接中。第3节。创建Volley Singleton类)
同样,对于缓存图像,您不应每次都创建新的ImageLoader
因为这样缓存变得毫无意义。你应该从你的AppController
课程中获得。
此外,我建议您使用 Picasso ,因为它在图像加载方面比 Volley
更好,而且更容易!
使用Picasso
,您只需调用以下行即可将图片从网络加载到ImageView
:
Picasso.with(context).load(urlString).to(imageView);