AdapterView是一组重要的组件,AdapterView本身是一个抽象基类,它派生的子类在用法上十分相似,只是显示界面有一定的区别,因此把它们归为一类,针对它们的共性集中讲解,并突出介绍它们的区别。
AdapterView具有如下特征:
(一)AdapterView继承了ViewGroup,它的本质是容器。
(二)AdapterView可以包括多个“列表项”,并将多个“列表项”以合适的形式显示出来。
(三)AdapterView显示的多个“列表项”由Adapter提供。调用AdapterView的setAdapter(Adapter)方法设置Adapter即可。
AdapterView派生了三个子类:AbsListView、AbsSpinner和AdapterViewAnimator,这三个子类依然是抽象的,实际使用时往往采用它们的子类。
(一)ListView和ListActivity
ListView是手机系统中使用非常广泛的一种组件,他以垂直的形式显示所有列表项。
生成列表视图(ListView)有如下两种方式。
(1)直接使用ListView进行创建。
(2)让Activity继承ListActivity(相当于该Activity显示的组件为ListView)。
一旦在程序中获得了ListView之后,接下来就需要为ListView设置它要显示的列表项了。在这一点上,ListView显示出AdapterView的特征:通过setAdapter(Adapter)方法为之提供Adapter,并由Adapter提供列表项即可。
(二)Adapter的接口及实现类
Adapter本身只是一个接口,他派生了ListAdapter和SpinnerAdapter两个子接口,其中ListAdapter为AbsListView提供列表项,而SpinnerAdapter为AbsSpinner提供列表项。
几乎所有的Adapter都继承了BaseAdapter,而BaseAdapter同时实现了ListAdapter、SpinnerAdapter两个接口,因此BaseAdapter及其子类可以同时为AbsListView、AbsSpinner提供列表项
Adapter常用的实现类如下:
(1)ArrayAdapter:简单、易用的Adapter,通常用于将数组或List集合的多个值包装成多个列表项。
(2)SimpleAdapter:并不简单、功能强大的Adapter,可用于将List集合的多个对象包装成多个列表项。
(3)SimpleCursorAdapter:与SimpleAdapter基本相似,只是用于包装Cursor提供的数据。
(4)BaseAdapter:通常用于被扩展。扩展BaseAdapter可以对各列表项进行最大限度的定制。
下一篇会代码的形式来解释它们的用法。