Android ListView分页加载时图片显示问题
场景:Android ListView需要分页加载,每个item中会有图片,图片又是从网络下载的。
问题:在滑动加载下一页时,上一页的图片明明已经下载完成了,但是无法显示出来。
Bug重现:
1,加载了第1页的数据,图片在后台下载(下载完成后更新ImageView),向下滑动ListView。
2,滑动到listview的最下面,请求第2页数据
3,第2页数据返回,调用adater.notifyDataSetChanged()刷新listview。
这时整个listview会重绘,系统调用adapter.getView方法重新绘制每一条数据,前一页的ImageView被销毁掉了。
这个时候,当前一页的图片下载完成后,再来调用之前ImageView的setImageBitmap方法,就会没反应,图片显示不出来(因为listview重绘了,之前的ImageView已经无效了)。
解决方案:
1,在adapter中记录下最新的ImageView,如:用Map<Integer, ImageView> viewMap来暂存最新的图片,key是position
2,设置imageView.setTag(imageUrl),
3,当adater.notifyDataSetChanged()被调用时,viewMap.put(position, imageView)会重新调用,viewMap旧的ImageView会被替换成新的ImageView
4,当图片下载结束时,遍历viewMap,比较imageUrl.equals(imgView.getTag()),如果相等则设置图片即可。
Android ListView分页加载时图片显示问题的更多相关文章
- android ListView 分页加载数据
1.mainActivity <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
- Android中ListView分页加载数据
public class MainActivity extends Activity { private ListView listView=null; //listview的数据填充器 privat ...
- 【Android进阶】Listview分页加载数据的实现
Listview分页加载数据的实现 public class MainActivity extends Activity { protected static final int SUCCESS_GE ...
- 实现Android ListView 自动加载更多内容
研究了几个小时终于实现了Android ListView 自动加载的效果. 说说我是怎样实现的.分享给大家. 1.给ListView增加一个FooterView,调用addFooterView(foo ...
- Android ListView只加载当前屏幕内的图片(解决list滑动时加载卡顿)
最近在做ListView分页显示,其中包括图片 和文字(先下载解析文字内容,再异步加载图片)发现每次点击下一页后,文字内容加载完毕,马上向下滑动,由于这时后台在用线程池异步下载图片,我每页有20条,也 ...
- 又优化了一下 Android ListView 异步加载图片
写这篇文章并不是教大家怎么样用listview异步加载图片,因为这样的文章在网上已经有很多了,比如这位仁兄写的就很好: http://www.iteye.com/topic/685986 我也是因为看 ...
- android listview 异步加载图片并防止错位
网上找了一张图, listview 异步加载图片之所以错位的根本原因是重用了 convertView 且有异步操作. 如果不重用 convertView 不会出现错位现象, 重用 convertVie ...
- Android GridView 分页加载数据
android UI 往右滑动,滑动到最后一页就自动加载数据并显示 如图: package cn.anycall.ju; import java.util.ArrayList; import java ...
- WebView加载页面,带链接的Img在页面第一次加载时无法显示的问题
在做一个App的过程中,用到WebView来显示几个页面.在这个过程中发现有些页面的显示出现了异常:页面中的Img链接在页面第一次加载时无法正常显示图片,退出页面再次进入后可正常显示.开始以为是Web ...
随机推荐
- 一个字 word 是16位, 一个字由两个字节组成 , 字节=byte ,一个字节8位, 位=bit 如果没有特殊说明kb 就是指 k*bit
一个字 word 是16位, 一个字由两个字节组成 , 字节=byte,,一个字节8位, 位=bit 如果没有特殊说明kb 就是指 k*bit kbyte= k*byte
- 《linux程序设计》笔记 第一章 入门
linux程序存放位置linux主要有一下几个存放程序的目录: /bin 系统启动程序目录 /usr/bin 用户使用的标准程序 /usr/local/bin 用于存放软件安装目录 /usr ...
- perl 正则匹配多个
Vsftp:/root# cat k1.pl my $_='upDaTe'; if( $_ =~ /^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK| ...
- exynos4412电路OrCAD问题
图(1) K4B4G1646B,DDR3 图(2) JIA排针 问题:理论上,引脚命名不能重复,图(1)和图(2)都存在重复的引脚命名,但在进行DRC检查和网表输出时图(1)无任何问题,图(2)却有错 ...
- Windows系统性能提升方法
看前提醒:在确认没有病毒和流氓软件的前提下,建议优化电脑:以下操作已经在Win7上试验,Win7以上的园友自己试验,自己感受,对电脑无害,但操作时请务必小心 设置虚拟内存 虚拟内存最小值物理内存1.5 ...
- bzoj3796
好像已经很久没有做后缀数组的题目,导致这种题一开始没想出来看到公共子串肯定想到后缀数组吧,但我都忘了最长公共子串怎么求了重要的性质:最长公共子串=max(h[i])名次相邻的两个后缀要分别属于s1,s ...
- 6个可以隐藏运行bat,浏览器等程序的方法
在电脑启动时或者设置时间时运行指定的程序很容易实现.但是有时候还需要运行时不显示主界面,隐藏到后台运行.比如:开机时一段Bat批处理执行删除默认共享; 开机自动运行浏览器隐藏到后代打开指定网页等,希望 ...
- [POJ 2019] Cornfields
Cornfields Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5516 Accepted: 2714 Descri ...
- 【转】objective-c基本数据类型之输出格式符
原文网址:http://blog.csdn.net/mamong/article/details/8255691 基本数据类型 1. int 输出格式符:%i, %d, %o %x, 2. float ...
- 微支付开发(.net)
最近一周多进行微支付开发工作,总结一下关于微支付开发中遇到的问题. 如写得不对请大家提出,第一次自己写文章.嘿嘿... 1.申请微支付,登陆公众平台后(公众号为服务号并已认证),进入“服务”-“服务中 ...