返回信息流如题,有可能是如下这两句出错,
Bitmap bitmap = ImageLoader.getInstance().loadImageSync(imageUrl, null, options);
listItemView.image.setImageBitmap(bitmap);
这两句在自己定义的adaper里,其中ImageLoader是使用的框架universal-image-loader
求大神指教
@dss886
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #21663同步于 2015/4/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
[问题][Android]关于ListAdapter中图像显示的问题
iwsy
2015/4/28镜像同步21 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
是在item里,convertView = listContainer.inflate(R.layout.list_item, null);
【 在 lixing 的大作中提到: 】
: 是在view对应的item的布局里set吧,第二句没太明白
: 发自「贵邮」
执行完Bitmap bitmap = ImageLoader.getInstance().loadImageSync(imageUrl, null, options);后,bitmap为空
【 在 icyfox 的大作中提到: 】
: 出啥错了
【 在 iwsy 的大作中提到: 】
: 如题,有可能是如下这两句出错,
: Bitmap bitmap = ImageLoader.getInstance().loadImageSync(imageUrl, null, options);
: listItemView.image.setImageBitmap(bitmap);
: ...................
loadImageSync是同步的,我没怎么用过,我都是异步加载
listAdapter 如下,config 和 option 都是框架初始化的参数,可以忽略不看,这个框架已经在另一个程序里测试过了。应该是我的ListAdapter的问题。
public class ListViewAdapter extends BaseAdapter {
private Context context;
private List<Map<String, Object>> listItems;
private LayoutInflater listContainer;
public final class ListItemView {
public ImageView image;
}
public ListViewAdapter(Context context, List<Map<String, Object>> listItems) {
this.context = context;
listContainer = LayoutInflater.from(context);
this.listItems = listItems;
System.out.println("Finish the construction of ListViewAdapter()");
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return listItems.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
System.out.println("In getView()");
String imageUrl;
ListItemView listItemView = null;
if (convertView == null) {
listItemView = new ListItemView();
convertView = listContainer.inflate(R.layout.list_item, null);
listItemView.image = (ImageView) convertView
.findViewById(R.id.imageItem);
convertView.setTag(listItemView);
} else {
listItemView = (ListItemView) convertView.getTag();
}
imageUrl = (String) listItems.get(position).get("image");
File cacheDir = StorageUtils.getOwnCacheDirectory(context,
"imageloader/Cache");
ImageLoaderConfiguration config = ...//此处忽略了若干行初始化参数代码
ImageLoader.getInstance().init(config);
DisplayImageOptions options = ...//此处忽略了若干行初始化参数代码
System.out.println("imageUrl[" + position + "] is " + imageUrl);
Bitmap bitmap = ImageLoader.getInstance()
.loadImageSync(imageUrl, null, options); //这句是关键,bitmap执行完为空,导致没有图像显示
if(bitmap == null) System.out.println("bitmap is null");
else System.out.println("bitmap is not null");
listItemView.image.setImageBitmap(bitmap);
return convertView;
}
}
我也很好奇它为什么起这个名字,我需要的也是异步加载,但我百度了下貌似这个函数只是返回bitmap类型的值,和同步异步没关系。
【 在 wang5bbe 的大作中提到: 】
:
: loadImageSync是同步的,我没怎么用过,我都是异步加载
没怎么用过ImageLoader,查了一下好像是可以做异步的
一般用三方库比如Picasso,Fresco这种的比较多
【 在 iwsy (猴子你好我是救兵) 的大作中提到: 】
: 如题,有可能是如下这两句出错,
: Bitmap bitmap = ImageLoader.getInstance().loadImageSync(imageUrl, null, options);
: listItemView.image.setImageBitmap(bitmap);
: ...................
既然是开源的,你可以设个断点进去看到底是否是null。。。
loadImageSync这个是同步方法
https://github.com/nostra13/Android-Universal-Image-Loader
// Load image, decode it to Bitmap and return Bitmap synchronously
Bitmap bmp = imageLoader.loadImageSync(imageUri, targetSize, options);