RecyclerView异步加载图片
如何在不使用第三方图片加载框架的基础上实现RecyclerView和ListView的中实现异步加载图片功能?
简单的方法是我们可以使用LruCache+AsyncTask结合的方式实现。大致思路是在onBindViewHolder()方法中根据key去内存缓存中对应的bitmap,如果找到了就直接显示,如果没有找到就开启一个异步任务去下载这个bitmap,下载完成后存进内存缓存中并执行相应的回调进行展示。
1.首先是LruCache的工具类,我们可以这样写:
private static final class CacheHelper{
private static LruCache<String, Bitmap> sLruCache;
static {
sLruCache = new LruCache<String, Bitmap> ((int)Runtime.getRuntime ().maxMemory ()/4){
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getByteCount ();
}
};
}
}
2.然后是下载图片的异步任务,我们可以这样写:
private static final class ImageTask extends AsyncTask<String, Void, Bitmap> {
private Listener mListener;
Image