Android 自定义ListView系列之适配器模式(少壮不努力,老大学IT)

时间:2024-04-04 21:07:38

最近做个项目,要用到异步加载,动态刷新UI等。看了下2.2系统的图库源码,感觉写的不错。同时又把ListView拿出来研究了下,做个笔记。

先上图:

Android 自定义ListView系列之适配器模式(少壮不努力,老大学IT)

1. Android中大量用到了适配器模式,比如ListView、GridView等。

所谓的适配器模式,我的理解是类似电源适配器或者转接头之类的转换器。

电源适配器将不适合机器工作的电压输出为机器适合的电压。转接头就更好理解了,将不配套的插头和插座连接在一起。适配器模式跟这个类似,将两个不相干的类作用在一起,使它们能配套适用。

Android 自定义ListView系列之适配器模式(少壮不努力,老大学IT)

Android里面的适配器结构基本如上图所示。还有其他的各种适配器类如SimpleAdapter,SimpleCursorAdapter等都是直接或间接地继承BaseAdapter。我们自定义ListView时所用到的Adapter同样要继承BaseAdapter必须实现几个方法:getCount(),getItem(int position),getItemId(int position),getView(int position, View convertView, ViewGroupparent)

为什么会这样呢?

注意到Spinnerdapter和ListAdapter都是接口,它们继承了Adapter接口。而BaseAdapter是一个抽象类,它实现上述两个接口,但它并没有实现上面提到的那四个方法。所以构建BaseAdapter的子类时必须要实现那四个没有实现的四个接口方法。其实在Android中有很多这样的例子,在继承某个类时会默认让你Override一些方法,这些方法就是父类中没有实现的接口方法。

重写了这四个方法后适配器才能够和控件合作,将数据和控件UI联系起来。