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中的数据错误原因和解决方案相关推荐

  1. Microsoft OLE DB Provider for SQL Server 错误 ‘80004005‘错误原因和解决方案

    Microsoft OLE DB Provider for SQL Server 错误 '80004005'错误原因和解决方案 方法步骤: 1.在WINSOWS/TEMP目录的安全选项中,添加帐号ev ...

  2. java.util.NoSuchElementException错误原因及解决方案

    java.util.NoSuchElementException错误原因及解决方案 参考文章: (1)java.util.NoSuchElementException错误原因及解决方案 (2)http ...

  3. 关于“System.Data.OleDb.OleDbException,外部数据库驱动程序 (1) 中的意外错误。”的解决方案

    背景: 客户在导入格式为xls的excel文件,发生了错误(下面是我用程序重现的错误的信息). 未处理System.Data.OleDb.OleDbExceptionHResult=-21474672 ...

  4. Android 中内存泄漏的原因和解决方案

    之前研究过一段时间关于 Android 内存泄漏的知识,大致了解了导致内存泄漏的一些原因,但是没有深入去探究,很多细节也理解的不够透彻,基本上处于一种似懂非懂的状态,最近又研究了一波,发现有很多新的收 ...

  5. 【C/C++】“std::basic_ios _Elem,_Traits:无法访问private变量在类中的声明”错误原因与解决办法

    C++工程出现如下错误: c:\program files (x86)\microsoft visual studio 8\vc\include\fstream(675) : error C2248: ...

  6. IndexError: list index out of range的错误原因及解决方案

    本人在读取txt文件时遇到IndexError: list index out of range 如下图: 于是检查错误原因,加入如下代码: 以指导rows一共有20662行,往下翻结果,还是报错了: ...

  7. 数据倾斜原因和解决方案

    在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显.主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Counters得出的平 ...

  8. ChatGPT 常见错误原因及解决方案:报错、回答不完整、网络错误等

    最近,由人工智能实验室 OpenAI 发布的对话式大型语言模型 ChatGPT 火得一塌糊涂.它可以与人类轻松地对话,无论是多么奇葩的问题 ChatGPT 都不在话下.在体验 ChatGPT 的同时我 ...

  9. ffmpeg中av_read_frame阻塞的原因与解决方案

    最近用到ffmpeg,想要av_read_frame立即返回,但是看网上的博客,都没有详细的解说,那就自己看源码. 两种方法: 设置回调打断函数和设置超时 超时,但是如果只设置该参数,依然会在av_r ...

  10. alin39048错误原因_ALIN10070解决方案-阿里云开发者社区

    报错原因 1.sdk版本过低 2.参数错误 3.权限问题 4.应用类型问题:调用新版本的APP支付接口是不能使用第三方应用调用APP支付接口的,需要使用自用型应用来调用 解决方案 解压文件获取到客户端 ...

最新文章

  1. tinycore 的基本搭建,开机时间只需要1-3秒
  2. 关于div容器高度随着浏览器宽度按照宽高比自适应的问题(css解决方案)
  3. 老司机找BUG指南,赶紧拿走。。
  4. redis 字符串数据(string)
  5. 关于新手的一个bug,pycharm和IDea的ctrl+C和ctrl+V不起作用
  6. 同一域名端口下,通过nginx部署多个vue项目
  7. keepalived+lvs基于http检测
  8. matlab调用C语言
  9. Linux下安装、配置、启动Apache
  10. python模拟键盘操作
  11. cocos2d-js 的 cc.callFunc 参数
  12. hive Unexpected column vector type LIST
  13. RISC-V MCU应用教程之PWR睡眠模式
  14. 电脑显示器基本设置与故障处理
  15. 华为双前置摄像头_华为第一款“刘海屏”手机发布,前置摄像头逆天
  16. 通过cmd命令行操作mysql
  17. 错误 1 error LNK1107: 文件无效或损坏: 无法在 0x320 处读取的————解决方案
  18. 同为博客,不同风格 — Hexo 另类搭建
  19. 使用SoundWire听电脑的声音
  20. 【热门主题:睡觉win7主题】

热门文章

  1. netlink 011 -- generic netlink 编程入门
  2. DPDK初始化分析(一)
  3. JM8.6之参考图像管理
  4. ffmpeg中的时间单位
  5. L1- 001——008
  6. udp聊天?使用udp+python实现多人聊天室
  7. NYOJ题目91-阶乘之和
  8. linux----文件权限管理
  9. java aes文件加密_JAVA AES文件加解密
  10. 局域网办公系统服务器备份,协同办公系统的数据备份经验分享