2015.06.15_ListView图片缓存(含步骤)

本文介绍了在处理ListView时遇到的图片缓存问题,当上下滚动加载网络数据时,ListView可能会显示错误的图片。分析原因在于ListView的convertView重用。解决方案是为ImageView设置Tag以确保显示正确URL的图片。同时,文章提到了使用多线程和异步任务来加载图片,并详细阐述了缓存图片的步骤,包括创建缓存、检查缓存、从缓存中获取图片以及在Adapter中使用自定义的ImageLoader。
摘要由CSDN通过智能技术生成

2015.06.15_ListView图片缓存(含步骤)


1.   在处理ListView中的图片时,有时会遇到上下滚动加载网络数据时,item中会先显示之前滚动过显示的图片,然后再显示最新网络加载的图片。这就是ListView缓存的图片对正确的图片加载时造成的影响。

分析:ListView会重用convertView,每一个ImageView并没有唯一的标识,在没有Tag的情况下,重用convertView就会导致新的图片在加载之前先显示旧的图片,根本原因是ListView中特定的Item没有显示正确的URL资源。


解决方案:ImageView设置Tag标志,在进行设置图片的时候进行判断。


多线程

GetView中将图片设置Ta:viewHolder.ivIcon.setTag( url );

然后给 ImageView Url 设置成员变量,

mImageView = imageView;   mUrl = url




异步任务:




--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



缓存图片:

// 1.  先创建缓存



// 2.  创建构造方法




// 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中,用成员变量去调用获取图片的方法




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值