Android图库异步图像加载
问题描述:
是否可以使用此项目的异步图像加载器http://open-pim.com/tmp/LazyList.zip与图库小部件? 我试过了:Android图库异步图像加载
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView=new ImageView(activity.getBaseContext());
imageLoader.DisplayImage(urlList.get(position), activity, imageView);
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
imageView.setLayoutParams(new Gallery.LayoutParams(150, 150));
return imageView;
}
但它没有效果。
答
您必须适当地标记你的图像视图,以便异步任务可以更新他们一旦图像从缓存或网络检索:
imageLoader.DisplayImage(urlList.get(position), activity, imageView);
imageView.setTag(urlList.get(position));
答
imageLoader.DisplayImage(urlList.get(位置),活动,imageView); imageView.setTag(urlList.get(position));
此代码正常工作。我们可以将它用于RemoteViews中的图像浏览。
答
下面的代码对我的项目工作正常。
使用ViewHolder,而不是新的ImageView(上下文C)每一次,如果你有viewholder 2个或多个视图,就像下面的代码(使用findViewById()):
holder.iv =(ImageView的)convertView .findViewById(R.id.iv);
holder.tv =(TextView)convertView.findViewById(R.id.tv);
而你最好在xml中扩充一个布局,并在getView()中编写视图styles.don't的代码,因为它对时间敏感。
从LazyList演示版本修改的代码,我希望这适用于你。祝你好运!
static class ViewHolder{
ImageView iv;
}
public View getView(int position, View convertView, ViewGroup parent) {
View holder = null;
if(convertView==null){
convertView = inflater.inflate(R.layout.item, null);
holder = new ViewHolder();
holder.iv = (ImageView) convertView;
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
imageLoader.DisplayImage(data[position], activity, holder.iv);
return convertView;
}
我已经添加它,现在我接收运行时在异常这里ImageLoader的类:活性=(活动)photoToLoad.imageView.getContext();这是类别转换异常 – 2011-02-28 21:13:19
尝试仅在创建ImageView时将活动对象作为上下文传递。 – 2011-02-28 21:23:08