我已经实现ViewHolder
模式我的adapter
,其中我有ImageView
填充了远程图像,问题是当我滚动时我总是得到一个错误的图像正确的一个(在fiew ms之后),我想这是因为当前视图是一个先前膨胀的视图,但我没有看到任何可能的解决方案
if (rowView == null) {
rowView = mInflater.inflate(R.layout.layout, parent, false);
ViewHolder viewHolder = new ViewHolder();
viewHolder.imageView = (ImageView) rowView.findViewById(R.id.image);
rowView.setTag(viewHolder);
}
ViewHolder viewHolder = (ViewHolder) rowView.getTag();
viewHolder.imageView.setImageResource(0);
imageLoader.DisplayImage(URL, viewHolder.imageView);
谢谢
答案 0 :(得分:3)
您似乎与您的代码在正确的轨道上。唯一的问题是,imageView.setImageResource(0)
似乎无法清除图像,至少在运行kitkat的Nexus 5上是这样。
相反,也许尝试
imageView.setImageDrawable(new ColorDrawable(android.R.color.transparent));
或者甚至可以将ImageView's
知名度设置为INVISIBLE
。
答案 1 :(得分:0)
在getView
中创建行时,使用URL字符串在setTag
上调用ImageView
,然后删除当前存在的任何图像。在图片完成加载后,在ImageView
上设置图片之前,请在其上调用getTag
并检查该网址是否仍然匹配。