我已经实现了ViewHolder模式im my adapter,其中有一个用远程映像填充的ImageView,问题是当我滚动时总是在获得正确的图像之前(在一个新的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);谢谢
发布于 2014-07-24 14:58:49
您的代码似乎在正确的轨道上。唯一的问题是,imageView.setImageResource(0)似乎没有清除图像,至少在我的Nexus 5运行kitkat。
相反,也许试一试
imageView.setImageDrawable(new ColorDrawable(android.R.color.transparent));
或者甚至可能将ImageView's可见性设置为INVISIBLE。
发布于 2014-07-24 14:50:13
在getView中创建行时,使用URL字符串调用ImageView上的setTag,并删除当前存在的任何图像。当图像完成加载后,在ImageView上设置它之前,调用getTag并检查该URL是否仍然匹配。
https://stackoverflow.com/questions/24936058
复制相似问题