文件名称: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()