下面分别讲一下它的几个常见的子类:
ListAdapter 接口:继承于 Adapter。ListAdapter 是一个 ListView 和 list 上的数据之间的桥梁。数据经
常来自于一个 Cursor,但这不是必须的。ListView 能显示任何数据,只要它是被一个 ListAdapter 包装的。
BaseAdapter 抽象类:是一个实现了既能在 ListView(实现了 ListAdapter 接口)和 Spinner(实现了
Spinner 接口)里用的 Adapter 类的一般基类。
ArrayAdapter 类:一个管理这样的 ListView 的 ListAdapter:这个 ListView 被一个数组所支持。这个
数组可装任意对象。默认状态下,这个类预期能这样:提供的资源 id 与一个单独的 TextView 相关联。如
果你想用一个更复杂的 layout,就要用包含了域 id 的构造函数。这个域 id 能够与一个在更大的 layout 资
源里的 TextView 相关联。它将被在数组里的每个对象的 toString()方法所填满。你可以添加通常对象的
lists 或 arrays。重写你对象的 toString()方法来决定 list 里哪一个写有数据的 text 将被显示。如果想用一些
其它的不同于 TextView 的 view 来显示数组(比如 ImageViews),或想有一些除了 toString()返回值所填
在 views 里的以外的数据,你就要重写 getView(int,View,ViewGroup)方法来返回你想要的 View 类型。
SimpleAdapter 类:一个使静态数据和在 XML 中定义的 Views 对应起来的简单 adapter。你可以把
list 上的数据指定为一个 Map 范型的 ArrayList。ArrayList 里的每一个条目对应于 list 里的一行。Maps 包
含着每一行的数据。你先要指定一个 XML,这个 XML 定义了用于显示一行的 view。你还要指定一个对应
关系,这个对应关系是从 Map 的 keys 对应到指定的 views。绑定数据到 views 发生在两个阶段:
如果一个 simpleAdapter.ViewBinder 是可用的,那么
SetViewValue(android.view.View,Object,String)要被调用。如果返回 true,那么绑定发生了。如果返回
false,那么如下 views 将被按顺序地尝试:
~实现了 Checkable 的 View(如 CheckBox),预期的绑定值是 boolen
~TextView,预期的绑定值是 String,并且 SetViewText 方法被调用
~ImageView,预期的绑定值是一个资源的 id 或 String。并且 SetViewImage 方法被调用
如果没有合适的绑定被发现,一个 IllegalStateException 被抛出。
下面是一个 SimpleAdapter 的例子:
/*--------------------mail.xml---------------------------*/
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
评论1
最新资源