adapter中的数据错误原因和解决方案
1、先上图
2、
图片错位原理:
如果我们只是简单显示list中数据,而没用convertview的复用机制和异步操作,就不会产生图片错位;重用convertview但没用异步,也不会有错位现象。但我们的项目中list一般都会用,不然会很卡。
在上图中,我们能看到listview中整屏刚好显示7个item,当向下滑动时,显示出item8,而item8是重用的item1,如果此时异步网络请求item8的图片,比item1的图片慢,那么item8就会显示item1的image。当item8下载完成,此时用户向上滑显示item1时,又复用了item8的image,这样就导致了图片错位现象(item1和item8是用的同一块内存哦)。
3、
解决方法:
对imageview设置tag,并预设一张图片。
向下滑动后,item8显示,item1隐藏。但由于item1是第一次进来就显示,所以一般情况下,item1都会比item8先下载完,但由于此时可见的item8的tag,和隐藏了的item1的url不匹配,所以就算item1的图片下载完也不会显示到item8中,因为tag标识的永远是可见图片中的url。
4、
关键代码:
// 给 ImageView 设置一个 tagholder.img.setTag(imgUrl);
// 预设一个图片holder.img.setImageResource(R.drawable.ic_launcher);// 通过 tag 来防止图片错位if (imageView.getTag() != null && imageView.getTag().equals(imageUrl)) {imageView.setImageBitmap(result);
}
adapter中的数据错误原因和解决方案相关推荐
- Microsoft OLE DB Provider for SQL Server 错误 ‘80004005‘错误原因和解决方案
Microsoft OLE DB Provider for SQL Server 错误 '80004005'错误原因和解决方案 方法步骤: 1.在WINSOWS/TEMP目录的安全选项中,添加帐号ev ...
- java.util.NoSuchElementException错误原因及解决方案
java.util.NoSuchElementException错误原因及解决方案 参考文章: (1)java.util.NoSuchElementException错误原因及解决方案 (2)http ...
- 关于“System.Data.OleDb.OleDbException,外部数据库驱动程序 (1) 中的意外错误。”的解决方案
背景: 客户在导入格式为xls的excel文件,发生了错误(下面是我用程序重现的错误的信息). 未处理System.Data.OleDb.OleDbExceptionHResult=-21474672 ...
- Android 中内存泄漏的原因和解决方案
之前研究过一段时间关于 Android 内存泄漏的知识,大致了解了导致内存泄漏的一些原因,但是没有深入去探究,很多细节也理解的不够透彻,基本上处于一种似懂非懂的状态,最近又研究了一波,发现有很多新的收 ...
- 【C/C++】“std::basic_ios _Elem,_Traits:无法访问private变量在类中的声明”错误原因与解决办法
C++工程出现如下错误: c:\program files (x86)\microsoft visual studio 8\vc\include\fstream(675) : error C2248: ...
- IndexError: list index out of range的错误原因及解决方案
本人在读取txt文件时遇到IndexError: list index out of range 如下图: 于是检查错误原因,加入如下代码: 以指导rows一共有20662行,往下翻结果,还是报错了: ...
- 数据倾斜原因和解决方案
在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显.主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Counters得出的平 ...
- ChatGPT 常见错误原因及解决方案:报错、回答不完整、网络错误等
最近,由人工智能实验室 OpenAI 发布的对话式大型语言模型 ChatGPT 火得一塌糊涂.它可以与人类轻松地对话,无论是多么奇葩的问题 ChatGPT 都不在话下.在体验 ChatGPT 的同时我 ...
- ffmpeg中av_read_frame阻塞的原因与解决方案
最近用到ffmpeg,想要av_read_frame立即返回,但是看网上的博客,都没有详细的解说,那就自己看源码. 两种方法: 设置回调打断函数和设置超时 超时,但是如果只设置该参数,依然会在av_r ...
- alin39048错误原因_ALIN10070解决方案-阿里云开发者社区
报错原因 1.sdk版本过低 2.参数错误 3.权限问题 4.应用类型问题:调用新版本的APP支付接口是不能使用第三方应用调用APP支付接口的,需要使用自用型应用来调用 解决方案 解压文件获取到客户端 ...
最新文章
- tinycore 的基本搭建,开机时间只需要1-3秒
- 关于div容器高度随着浏览器宽度按照宽高比自适应的问题(css解决方案)
- 老司机找BUG指南,赶紧拿走。。
- redis 字符串数据(string)
- 关于新手的一个bug,pycharm和IDea的ctrl+C和ctrl+V不起作用
- 同一域名端口下,通过nginx部署多个vue项目
- keepalived+lvs基于http检测
- matlab调用C语言
- Linux下安装、配置、启动Apache
- python模拟键盘操作
- cocos2d-js 的 cc.callFunc 参数
- hive Unexpected column vector type LIST
- RISC-V MCU应用教程之PWR睡眠模式
- 电脑显示器基本设置与故障处理
- 华为双前置摄像头_华为第一款“刘海屏”手机发布,前置摄像头逆天
- 通过cmd命令行操作mysql
- 错误 1 error LNK1107: 文件无效或损坏: 无法在 0x320 处读取的————解决方案
- 同为博客,不同风格 — Hexo 另类搭建
- 使用SoundWire听电脑的声音
- 【热门主题:睡觉win7主题】