热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android错误之ListView加载错位_ListView图片错位

又遇到ListView加载item时,多个item中的图片会错位的情况现象如下图,同一个人的头像显示的乱七八糟找了一张图,很好地说明了问题的原因问题原因就在于convertView

又遇到ListView加载item时,多个item中的图片会错位的情况

现象如下图,同一个人的头像显示的乱七八糟

技术分享


找了一张图,很好地说明了问题的原因

技术分享

问题原因就在于convertView的重用,当重用 convertView 时,最初一屏显示 7 条记录, getView 被调用 7 次,创建了 7 个 convertView,

当 Item1 划出屏幕, Item8 进入屏幕时,这时没有为 Item8 创建新的 view 实例, Item8 复用的是Item1时候创建的view,

Item8 时刷上了 Item8 的数据,但是刚开始代码是这样写的,本意是头像为空的时候不去加载,可以节省资源

String avatarUrl = user.getAvatar();
if (avatarUrl!=null&&!avatarUrl.equals("")) {
	ImageLoader.getInstance().displayImage(avatarUrl, viewHolder.userLogo,
			ActivityUtil.getOptions(R.drawable.user_icon_default_main));
}
如果恰好item8的头像是空字符串,就没有赋值,导致item8显示的是item1的头像,以此类推,只要遇到空头像,就会显示它所重用的convertView原来显示的图片,也就造成了图片错位。

所以后来改成了下面这样

// 头像
String avatarUrl = null;
if (user.getAvatar() != null) {
	avatarUrl = user.getAvatar();
}
ImageLoader.getInstance().displayImage(avatarUrl, viewHolder.userLogo,
	ActivityUtil.getOptions(R.drawable.user_icon_default_main));
不管头像为不为空,都去加载,把复用的convertView原来自带的图片替换掉就可以了。

技术分享


作者:jason0539

博客:http://blog.csdn.net/jason0539(转载请说明出处)

推荐扫码关注公众号,看点不一样的东西

技术分享



Android错误之ListView加载错位_ListView图片错位


推荐阅读
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 本文详细介绍了在Windows系统中如何配置Nginx以实现高效的缓存加速功能,包括关键的配置文件设置和示例代码。 ... [详细]
  • importjava.io.*;importjava.util.*;publicclass五子棋游戏{staticintm1;staticintn1;staticfinalintS ... [详细]
  • 本文详细介绍了如何利用 Bootstrap Table 实现数据展示与操作,包括数据加载、表格配置及前后端交互等关键步骤。 ... [详细]
  • 本文探讨了程序员这一职业的本质,认为他们是专注于问题解决的专业人士。文章深入分析了他们的日常工作状态、个人品质以及面对挑战时的态度,强调了编程不仅是一项技术活动,更是个人成长和精神修炼的过程。 ... [详细]
  • 深入探讨前端代码优化策略
    本文深入讨论了前端开发中代码优化的关键技术,包括JavaScript、HTML和CSS的优化方法,旨在提升网页加载速度和用户体验。 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
  • 心理学经典:《思考致富》
    《思考致富》是由美国著名成功学大师拿破仑·希尔撰写的一部重要著作,该书基于希尔长达20年的深入研究和访谈,探讨了个人成功的核心要素。书中不仅揭示了成功的关键,还提供了一系列实用的方法和策略。 ... [详细]
  • empty,isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!检测一个变量是否是null ... [详细]
  • 小编给大家分享一下Vue3中如何提高开发效率,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获, ... [详细]
author-avatar
谢撒旦法_774
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有