如何在小部件上将图像从url设置为imageview?
我认为最好的方法是使用volley lib:
ImageLoader imageLoader = MyVolley.getImageLoader();
imageLoader.get("http://www.shadyab.com/assests/images/upload/yuu1.jpg", new ImageLoader.ImageListener() {
@Override
public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) {
remoteViews.setImageViewBitmap(R.id.img_view_main_image_widgets,response.getBitmap());
}
@Override
public void onErrorResponse(VolleyError error) {
}
});
但我的imageview将是白色的!
已更新:
我在另一个项目上测试了它并且工作正常(一个简单的imageview)。
final ImageView two = (ImageView)findViewById(R.id.two);
ImageLoader imageLoader = MyVolley.getImageLoader();
imageLoader.get("http://www.shadyab.com/assests/images/upload/yuu1.jpg", new ImageLoader.ImageListener() {
@Override
public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) {
two.setImageBitmap(response.getBitmap());
}
@Override
public void onErrorResponse(VolleyError error) {
}
});
但我添加了一个日志,我收到了错误:
01-21 17:28:41.801:E /错误(2855):错误
imageLoader.get("http://www.shadyab.com/assests/images/upload/yuu1.jpg", new ImageLoader.ImageListener() {
@Override
public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) {
remoteViews.setImageViewBitmap(R.id.img_view_main_image_widgets,response.getBitmap());
if(response.getBitmap() == null){
Log.e("error", "error");
}
}
已更新:
我的所有代码:
我得到:
01-21 17:50:41.066:E / getBitmap(13554):getBitmap
imageLoader.get("http://www.shadyab.com/assests/images/upload/yuu1.jpg", new ImageLoader.ImageListener() {
@Override
public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) {
if(response == null){
Log.e("response", "response");
}else if (response.getBitmap() == null){
Log.e("getBitmap", "getBitmap");
}else{
remoteViews.setImageViewBitmap(R.id.img_view_main_image_widgets,response.getBitmap());
}
}
答案 0 :(得分:1)
确实,您的Bitmap
是null
。这是你的错误。
为什么null
是另一个:您的网络电话只返回Bitmap
,因此不会显示任何内容......
始终检查null
s:
@Override
public void onResponse(ImageContainer response, boolean isImmediate) {
if (response == null) {
// FAILURE
return ;
}
Bitmap bitmap = response.getBitmap();
if (bitmap != null) {
// SUCCESS
// setImageBitmap(bitmap);
}
else {
// FAILURE
// display placeholder or whatever you want
}
}
答案 1 :(得分:0)
试试这个:
URL url = new URL("http://www.shadyab.com/assests/images/upload/yuu1.jpg");
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
imageView.setImageBitmap(bmp);