项目结构图,
MListAdapter:
BitmapCache
xml机构图 :main中只包含一个ListView item中只包含一个ImageView
MainActivity代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.listView);
initData();
MListAdapter adapter = new MListAdapter(this,infos);
mListView.setAdapter(adapter);
}
private void initData() {
infos = new ArrayList<Info>();
Info info1 = new Info("http://imgstatic.baidu.com/img/image/shouye/fanbingbing.jpg");
Info info2 = new Info("http://imgstatic.baidu.com/img/image/shouye/liuyifei.jpg");
Info info3 = new Info("http://imgstatic.baidu.com/img/image/shouye/wanglihong.jpg");
Info info4 = new Info("http://imgstatic.baidu.com/img/image/shouye/gaoyuanyuan.jpg");
Info info5 = new Info("http://imgstatic.baidu.com/img/image/shouye/yaodi.jpg");
Info info6 = new Info("http://imgstatic.baidu.com/img/image/shouye/zhonghanliang.jpg");
Info info7 = new Info("http://imgstatic.baidu.com/img/image/shouye/xiezhen.jpg");
Info info8 = new Info("http://imgstatic.baidu.com/img/image/shouye/yiping3.jpg");
Info info9 = new Info("http://imgstatic.baidu.com/img/image/shouye/erping4.jpg");
Info info10 = new Info("http://imgstatic.baidu.com/img/image/shouye/hangeng.jpg");
Info info11 = new Info("http://imgstatic.baidu.com/img/image/shouye/liuyan1.jpg");
Info info12 = new Info("http://imgstatic.baidu.com/img/image/shouye/liushishi1.jpg");
Info info13 = new Info("http://imgstatic.baidu.com/img/image/shouye/sunli1.jpg");
Info info14 = new Info("http://imgstatic.baidu.com/img/image/shouye/tangyan1.jpg");
Info info15 = new Info("http://imgstatic.baidu.com/img/image/shouye/zhanggenshuo1.jpg");
Info info16 = new Info("http://imgstatic.baidu.com/img/image/shouye/xiaohua0605.jpg");
infos.add(info1);
infos.add(info2);
infos.add(info3);
infos.add(info4);
infos.add(info5);
infos.add(info6);
infos.add(info7);
infos.add(info8);
infos.add(info9);
infos.add(info10);
infos.add(info11);
infos.add(info12);
infos.add(info13);
infos.add(info14);
infos.add(info15);
infos.add(info16);
}
MListAdapter:
public MListAdapter(Context ctx, ArrayList<Info> infos) {
this.ctx = ctx;
this.infos = infos;
mQueue = Volley.newRequestQueue(ctx);
mImageLoader = new ImageLoader(mQueue, new BitmapCache());
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = LayoutInflater.from(ctx).inflate(R.layout.item, null);
//特意不使用Holder
ImageView imageView = (ImageView) convertView.findViewById(R.id.item);
ImageListener listener = ImageLoader.getImageListener(imageView, android.R.drawable.ic_menu_rotate, android.R.drawable.ic_delete);
mImageLoader.get(getItem(position).getUrl(), listener);
return convertView;
}
BitmapCache
public class BitmapCache implements ImageCache {
private LruCache<String, Bitmap> mCache;
public BitmapCache() {
int maxSize = 10 * 1024 * 1024;
mCache = new LruCache<String, Bitmap>(maxSize) {
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes() * value.getHeight();
}
};
}
@Override
public Bitmap getBitmap(String url) {
return mCache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
mCache.put(url, bitmap);
}
}
源码地址: http://download.csdn.net/detail/cj6585256/5532845
使用后感觉:
滑动非常流畅,图片加载非常快,图片不错位
有人说下载缺少文件,把Volley源文件地址给上:http://download.csdn.net/detail/cj6585256/6407971