android listview使用glide异步加载图片错位,闪烁问题

参考网上方法: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<GlideDrawable>() {
        @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<GlideDrawable>() {
        @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:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   
    <item name="imageloader_uri" type="id"/>
</resources>

问题解决了!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值