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

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

因为Adapter对View的复用以及图片网络请求的耗时问题有时候在快速滑动且网络不佳的情况下会出现图片加载错乱。

即滑动到屏幕内发出网络请求,但并未请求完成就已滑出屏幕,待到请求完成时,就加载到了其它ItemView上。

常用的做法是将uri设置为ImageView的tag例如:

        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);
        }
1
2
3
4
5
6
7

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


但是当我们使用Glide做图片加载的时候这么设置会出现You must not call setTag() on a view Glide is targeting 错误提示。

此时我们只需要通过setTag(key,object)来进行设置即可:

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);
        }
1
2
3
4
5
6
7

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


<?xml version="1.0" encoding="utf-8"?>

<resources>

   <item name="imageid" type="id"/>

</resources>

1

2

3

4

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



目录
相关文章
|
1月前
|
缓存 Ubuntu JavaScript
踩坑记录:QML加载图片资源
踩坑记录:QML加载图片资源
86 0
|
10天前
图片加载失败时怎样替换?
图片加载失败时怎样替换?
|
7月前
html+css+js图片加载失败设置默认图片
html+css+js图片加载失败设置默认图片
|
缓存 Android开发
android Fragment单页面加载,避免重复加载(懒加载)分析
android Fragment单页面加载,避免重复加载(懒加载)分析
|
缓存 Android开发
Android笔记:使用Glide加载图片刷新时会闪烁
Android笔记:使用Glide加载图片刷新时会闪烁
1095 0
|
缓存 Swift iOS开发
iOS开发swift版异步加载网络图片(带缓存和缺省图片)
iOS开发swift版异步加载网络图片(带缓存和缺省图片)
424 0
|
存储 缓存 Java
浅谈 Glide - BitmapPool 的存储时机 & 解答 ViewTarget 在同一View显示不同的图片时,总用同一个 Bitmap 引用的原因
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguanh/ GitHub : https://github.com/af913337456/ 腾讯云专栏: https://cloud.tencent.com/developer/user/1148436/activities 这两天在改造我的私人APP 非ROOT版微信自动回复, 使之可以多开的时候,碰到一个这样的问题。
1505 0
|
Android开发
探索Glide对Gif图片资源的获取、解析过程
先预祝大家汤圆节快乐!很久没写博客了。今天我们来探索一下Glide是如何支持Gif图片加载的。 本篇博客的目的 了解代码分析的基本思路与方法 了解Glide是如何对Gif图片进行支持的 探索背景 为什么会有这么一个想法呢,一来一直对Glide是知其名而不知其所以然,二来还主要是工作中需要对它研究研究,以便更好的支持工作内容。
1487 0