2015.06.15_ListView图片缓存(含步骤)
1. 在处理ListView中的图片时,有时会遇到上下滚动加载网络数据时,item中会先显示之前滚动过显示的图片,然后再显示最新网络加载的图片。这就是ListView缓存的图片对正确的图片加载时造成的影响。
分析:ListView会重用convertView,每一个ImageView并没有唯一的标识,在没有Tag的情况下,重用convertView就会导致新的图片在加载之前先显示旧的图片,根本原因是ListView中特定的Item没有显示正确的URL资源。
解决方案:为ImageView设置Tag标志,在进行设置图片的时候进行判断。
多线程:
mImageView = imageView; mUrl = url;
异步任务:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
缓存图片:
// 1. 先创建缓存
// 3. 1 增加到缓存(增加之前先判断当前缓存是否存在)
public void addBitmapToCache(String url,Bitmap bitmap){
if(getBitmapFromCache(url) == null){
cCaches.put(url,bitmap);
}
}
// 3.2 从缓存中获取数据
public Bitmap getBitmapFromCache(String url){
return mCaches.get(url);
}
// 3.3 获取图片
// 3.4 在异步中进行判断
// 3.5 在Adapter中实例化自己创建的ImageLoader
在getView中,用成员变量去调用获取图片的方法