在我的应用程序中,图像是从服务器加载的。我用图像加载器进行图像加载。
但问题是,当图像加载时,如果我滚动列表视图,图像被洗牌,图像的顺序是错误的。但是在加载完成后,所有图像都处于正确位置。如果我现在滚动图像没有洗牌,它们处于正确的位置。
我在listview setTag()
中使用了getTag()
和getView()
。
请帮我解决在列表视图中加载图像时图像混洗的问题。
这是我的getView()
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View rowView = convertView;
ProgressBar progress;
ImageView image;
ViewHolder view_holder = null;
String m_AllImages=m_BaseImageAll.get(position);
try {
if (rowView == null) {
rowView = inflater.inflate(R.layout.photo_show_sub,
null);
view_holder = new ViewHolder();
view_holder.progress = (ProgressBar) rowView.findViewById(R.id.photoGalProgress);
view_holder.image = (ImageView) rowView.findViewById(R.id.image);
}
else
{
view_holder = (ViewHolder) rowView.getTag();
}
imageLoader.displayImage(m_AllImages,
activity, view_holder.image, view_holder.progress);
} catch (Exception ex) {
ex.printStackTrace();
}
return rowView;
}
答案 0 :(得分:3)
在您的代码::
中添加此行 holder.image.setTag(m_AllImages.get(position));
imageLoader.displayImage(m_AllImages, activity, view_holder.image, view_holder.progress);
答案 1 :(得分:2)
实际上并不是因为图像被洗牌,一些图像比以前更快下载,没有图像的ImageView被包装掉,加载的图像首先显示图像。所以它似乎最初被洗牌,除非所有图像都被下载并且它实际上没有被洗牌。
用虚拟图像检查,比如说
image.setImageBitmap(R.Drawable.ic_launcher);