listview 图片异步加载 图片错位 软引用 getView调用次数 convertView重用

时间:2015-12-30 16:51:11
【文件属性】:
文件名称:listview 图片异步加载 图片错位 软引用 getView调用次数 convertView重用
文件大小:175KB
文件格式:RAR
更新时间:2015-12-30 16:51:11
图片异步加载 图片错位 软引用 convertView ListView异步加载图片,图片错位问题解决方案 * 问题分析:我们在使用AsyncTask异步下载图片的时候,经常会用到convertView的重用,一般情况下,滑动后第一个可见的元素(我们给它命个名,称为A1)和 * listview的第一个元素(A)是公用一个convertView的(一般情况),此时问题就来了,如果异步下载图片执行的比较慢,第一个元素对应的url * 下载的图片会放到第一个元素上面还是滑动后第一个可见的元素上面呢? * 解决方案:给每个listview的ImageView设置tag,使用findViewWithTag()的方式来得到ImageView,此时图片就不会产生错位了。而且 * 值得注意的是,由于A和A1使用同一个convertView,因此如果A中的ImageView已经有值得话,当A2展示的并且它所对应的图片还未加载完成的时候, * A2会显示A上的图片,这明显是不对的,因此我们这里给它设置一个默认的icon,即mHolder.mImageView.setImageResource(R.drawable.ic_launcher); * 思路简介:一般listview中涉及到图片加载的,为了提高用户体验,一般会使用一个软引用和存文件的方式来实现。不过还见过这样来实现的:即用一个HashMap来存放很小一部分的数据, * 当HashMap中的大小达到一定的值时,清空HashMap,并且将数据放入软应用中。 * 注意操作sdcard权限已经网络访问权限的加入
【文件预览】:
image_lazy_load
----AndroidManifest.xml(968B)
----res()
--------layout()
--------drawable-ldpi()
--------drawable-mdpi()
--------drawable-hdpi()
--------drawable-xhdpi()
--------values()
----src()
--------yanbin()
----proguard-project.txt(781B)
----bin()
--------classes()
--------image_lazy_load.apk(45KB)
--------AndroidManifest.xml(968B)
--------res()
--------jarlist.cache(119B)
--------classes.dex(18KB)
--------resources.ap_(35KB)
----.classpath(364B)
----assets()
----project.properties(562B)
----.project(851B)
----gen()
--------yanbin()

网友评论

  • 并不能解决我的问题
  • 很不错 有帮助
  • 解决了一部分问题,不过我的listview的填充方式和你的不一样
  • 不错,解决了一部分问题,谢谢!
  • 很好用,谢谢啦
  • 很有参考意义,对解决我的问题有一些帮助。
  • 还行 ,可以参考。
  • 还不错,listview的优化能看到效果,不过每个item上都加上个下载的进度条,下载的时候就会出现重复进度条的情况,不知楼主是否有解?
  • 好吧,不是我要的
  • 不理想啊 但是还是要谢谢 啊
  • 太高端了 作为新手的我看不懂..最后还是在一位大神的指引下 完成了 图片加载错位的问题 他说在getview里面如果有if就必须有else 否则图片错误是很正常的现象
  • 不错 新人初学 很重要!
  • 思路不错 值得学习
  • 思路很好,可以参考
  • 不错,挺好,谢谢分享
  • 可以学习getview的基本方法,不错。
  • 没什么用,一般
  • 思路值得学习,还需要改进
  • 不错,帮助挺大的,谢谢分享
  • 很不错,可以当工具类使用。