我有一个显示两列图像的gridview。我加载这些图像与异步任务(请参阅这篇文章Lazy load of images in ListView)Android - Gridview图像在滚动上混合
但是,当我滚动gridview,位置图像混合。例如,第14张图像显示第1张图像,我认为视图试图在异步任务完成之前显示旧图像。
我的代码:
public Content getItem(int position) {
return contents.get(position);
}
public long getItemId(int position) {
return position;
}
@Override
public boolean hasStableIds() { return true; }
public View getView(int position, View convertView, ViewGroup parent) {
Thumbnail contentView;
Content current = contents.get(position);
if (convertView == null) {
contentView = new Thumbnail(mContext);
}
else {
contentView = (Thumbnail) convertView;
}
contentView.title = current.getTitle();
contentView.image = current.getImage();
contentView.link = current.getLink();
contentView.init();
return contentView;
}
初始化函数
TextView titleText = (TextView)super.findViewById(R.id.titleText);
titleText.setText(title);
ImageView imageControl = (ImageView)super.findViewById(R.id.thumbImage);
DrawableManager loadImage = new DrawableManager(); loadImage.fetchDrawableOnThread(imgUrl, imageControl);
等待您的帮助
感谢
添加了这一行。但没有任何改变。它显示旧图像,并在异步任务完成时用新图像进行更改。有时它也显示错误的图像。我认为异步任务指向错误的图像控制。还尝试将标记设置为imageview。 – dracula 2013-04-30 11:47:45
是的,也可能因为视图重用而发生(例如,由于流过屏幕边缘而变得不可见的ImageView可以被重复用于具有相同内存指针的可见视图)。但设置标签肯定会帮助你(并帮助我多次)。 – 2013-04-30 12:05:10
设置网址标签和比较标签与网址字符串为我工作:)非常感谢你安德烈。这真的很头疼 – dracula 2013-04-30 12:34:08