带有远程ImageView的Android ViewHolder

时间:2014-07-24 14:10:02

标签: android android-imageview android-viewholder

我已经实现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);

谢谢

2 个答案:

答案 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并检查该网址是否仍然匹配。