https://github.com/nostra13/Android-Universal-Image-Loader
除了列表视图中的第一个项目的图像加载任务被取消外,它的工作效果很好。
上面说是Is called when image loading task was cancelled because View for image was reused in newer task
然而,既然视图仍然清晰可见,那么这个视图还不应该被回收吗?我正在使用convertView。
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
if (getItemViewType(position) == HAS_IMAGE)
{
if (convertView == null)
{
convertView = li.inflate(R.layout.item_update_pic, null);
new UpdateWithImageWrapper(convertView, position); // this is where views are looked up and set
}
((UpdateWithImageWrapper) convertView.getTag()).setMyData(data.get(position), position); // this is where the correct data is set to the views and images are set to be loaded
}
else
{
if (convertView == null)
{
convertView = li.inflate(R.layout.item_update, null);
new UpdateNoImageWrapper(convertView, position);
}
((UpdateNoImageWrapper) convertView.getTag()).setMyData(data.get(position), position);
}
return convertView;
}
有人有解决方案吗?
编辑:只是想补充一点,它与我的所有列表视图都有问题。
使用ImageLoader 1.8.4
也许有办法阻止listview如此迅速地回收?
ImageLoadingListener()
中
@Override
public void onLoadingCancelled(String imageUri, View view) { }
我将图像设置为表示加载错误的图像。事实证明,如果我在调用这个方法时不更改图像,那么一切都很好。
因此,对我来说,真正的问题是,当调用onLoadingCancelled方法时,图像已经加载,并且将此处的imageview设置为表示取消的图像会覆盖真实图像的成功加载。