是否可以将此项目http://open-pim.com/tmp/LazyList.zip中的异步图像加载器与Gallery小部件一起使用? 我试过了:
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;
}
但它没有效果。
答案 0 :(得分:3)
您必须正确标记图像视图,以便异步任务可以在从缓存或网络中检索图像后更新它们:
imageLoader.DisplayImage(urlList.get(position), activity, imageView);
imageView.setTag(urlList.get(position));
答案 1 :(得分:1)
以下代码适用于我的项目。
每次使用ViewHolder而不是新的ImageView(Context c),如果在viewholder中有2个或更多视图,只需使用如下代码(使用findViewById()):
holder.iv =(ImageView)convertView.findViewById(R.id.iv);
holder.tv =(TextView)convertView.findViewById(R.id.tv);
你最好在xml中扩展一个布局,并在getView()中编写视图的样式代码。因为它是时间敏感的。
从LazyList demo修改的代码,我希望这对你有用。最好祝福!
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;
}
答案 2 :(得分:0)
imageLoader.DisplayImage(urlList.get(position),activity,imageView); imageView.setTag(urlList.get(位置));
此代码工作正常。我们可以将它用于RemoteViews中的图像视图。