RecycView条目布局使用Glide异步加载图片时错位问题

Glide 

Glide是一个快速高效的Android开源媒体管理和图像加载框架,它将媒体解码、内存和磁盘缓存以及资源池封装到一个简单易用的界面中。

Glide支持获取、解码和显示视频剧照、图像和动画GIF。Glide包含一个灵活的API,允许开发人员插入几乎任何网络堆栈。默认情况下,Glide使用自定义的基于HttpUrlConnection的堆栈,但也包括插入谷歌的Volley项目或Square的OkHttp库的实用程序库。

Glide的主要重点是使滚动任何类型的图像列表尽可能平滑和快速,但Glide也适用于几乎任何需要获取、调整大小和显示远程图像的情况。

引用

repositories {
  google()
  mavenCentral()
}

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.16.0'
}

兼容性

最低Android SDK:Glide v4要求API级别至少为14。

编译Android SDK:Glide v4要求您根据API 26或更高版本进行编译。

如果你需要支持旧版本的Android,可以考虑使用Glide v3,它适用于API 10,但没有得到积极维护。

okhttp3.x:有一个可选的依赖项,称为okhttp3集成,请参阅文档页面。

Volley:有一个可选的依赖项,称为截击集成,请参阅文档页面。

圆形图片:CircleImageView/CircularImageView/RoundedImageView已知在TransitionDrawable(.crossFade()与.tumbnail()或.placeholder())和动画GIF方面存在问题,请使用BitmapTransformation(.circleCrop()将在v4中提供)或.dontAnimation()来解决此问题。

巨大的图像(地图、连环画):Glide可以通过下采样加载巨大的图像,但不支持缩放和平移ImageViews,因为它们需要特殊的资源优化(如平铺)才能在没有OutOfMemoryErrors的情况下工作。

 

问题描述

两层以上的RecycView嵌套时,可能会出现内层RecycView中的item出现加载错位的问题。

错位原因

加载图片时,每个子条目的position有重复的可能

比如每个条目下有10张图片(或者其他资源),那么子条目的position都是0-9;

此时滑动,如果后台在进行加载动作,position位置对上的话,会直接加载非本条目的图片,导致本条目应该加载的图片没被加载出来,表现出错位;

解决方案

在adpter中,给图片加载控制设置tag(该tag最好保证唯一性,不会与其他条目重复)

将设置的tag,用list或者map保存,在加载图片时将list中的tag与控件getTag进行对比,相等则加载

场景描述

该问题出现在第一层RecycView作为标题或者日期筛选,内层RecycView作为Item展现的情况下

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会写代码的猴子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值