前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图片加载错乱,Glide无法设置Tag解决方式

图片加载错乱,Glide无法设置Tag解决方式

作者头像
程思扬
发布2022-01-10 14:28:25
1.2K0
发布2022-01-10 14:28:25
举报
文章被收录于专栏:程思阳的专栏程思阳的专栏

因为Adapter对View的复用以及图片网络请求的耗时问题有时候在快速滑动且网络不佳的情况下会出现图片加载错乱。 即滑动到屏幕内发出网络请求,但并未请求完成就已滑出屏幕,待到请求完成时,就加载到了其它ItemView上。 常用的做法是将uri设置为ImageView的tag例如:

代码语言:text
复制
        String title = dataBean.getTitle();
        String uri = dataBean.getThumbnail_pic_s();
        holder.mImgContentItem.setTag(uri);
        if(holder.mImgContentItem.getTag()!=null&&uri==holder.mImgContentItem.getTag(){
            holder.mImgContentItem.setImageResource();
            holder.mTextContentItem.setText(title);
        }

即在加载前将图片uri传递给ImageView,在要展示图片前,将当前请求的uri和ImageView做对比判断,是同一个,才进行加载。

但是当我们使用Glide做图片加载的时候这么设置会出现You must not call setTag() on a view Glide is targeting 错误提示。 此时我们只需要通过setTag(key,object)来进行设置即可:

代码语言:text
复制
String title = dataBean.getTitle();
        String uri = dataBean.getThumbnail_pic_s();
        holder.mImgContentItem.setTag(R.id.imageid,uri);
        if(holder.mImgContentItem.getTag(R.id.imageid)!=null&&uri==holder.mImgContentItem.getTag(R.id.imageid)){
            Glide.with(mContext).load(uri).into(holder.mImgContentItem);
            holder.mTextContentItem.setText(title);
        }

注意:setTag内第一个参数key,必须是resource资源,只需在res-value内建立一个ids.xml即可,内部代码:

代码语言:html
复制
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="imageid" type="id"/>
</resources>

然后就可以通过R.id进行引用了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档