参考网上方法:https://www.jianshu.com/p/f5593b87ee07
// 获取图像控件的Tag
String tag = (String) holder.imgView.getTag();
// 如果不一样,则设置为默认图片
if (!TextUtils.equals(mDataList.get(position).getUrl(), tag)) {
holder.imgView.setImageResource(R.drawable.ic_launcher);
}
// 使用Glide展示图像
Glide.with(DemoActivity.this)
.load(mDataList.get(position).getUrl())
.into(new SimpleTarget() {
@Override
public void onResourceReady(GlideDrawable resource,
GlideAnimation super GlideDrawable> glideAnimation) {
holder.imgView.setTag(mDataList.get(position).getUrl());
holder.imgView.setImageDrawable(resource);
}
});
整体不在闪烁,但是只有第一张图片是显示不正确的。后来又在这个基础上修改如下:
// 使用Glide展示图像
holder.imgView.setTag(R.id.imageloader_uri,mDataList.get(position).getUrl());
Glide.with(DemoActivity.this)
.load(mDataList.get(position).getUrl())
.into(new SimpleTarget() {
@Override
public void onResourceReady(GlideDrawable resource,
GlideAnimation super GlideDrawable> glideAnimation) {
// 获取图像控件的Tag
String tag = (String) holder.imgView.getTag(R.id.imageloader_uri);
// 如果一样,显示图片
if (TextUtils.equals(mDataList.get(position).getUrl(), tag)) {
holder.imgView.setImageDrawable(resource);
}
}
});
注意:
set和getTag的时候多设置了一个参数,R.id.imageloader_uri;
这里的R.id.imageloader_uri是values下新建的ids.xml:
问题解决了!