AdapterView
是一个 ViewGroup (opens new window),用于显示加载和显示 Adapter(适配器)中适配数据项的 View(视图)的抽象类,由子类来具体实现。
# 基本概念
Android 中的列表数据项视图一般采用适配器(Adapter)模式,简单概括就是:Data(数据)-> Adapter(适配器)-> AdapterView(显示)。
用日常生活中的一个形象的场景来形容,就像居民供电规格是220V交流电,不同的电器通过不同的适配器(Adapter)进行转换适配成所需要的规格使用。
例如:手机充电适配器将家用220V交流电规格适配成5V/9V/12V等规格的直流电给手机电池充电使用;电动自行车充电适配器将家用电转换成48V/60V/72V规格直流电给电池充电使用...
# 常见控件
Android 中默认常见的几种适配类型控件如下:
- Spinner (opens new window):列表选择框
- ListView (opens new window):视图列表
- Gallery (opens new window):画廊(在API 16,Android 4.1中已废弃,被ViewPager控件替代)
- GridView (opens new window):网格列表
- ExpandableListView (opens new window):可展开的视图列表
兼容库中常见的拓展适配控件:
- RecyclerView (opens new window):可复用的视图列表
- ViewPager (opens new window):滑动页面列表
# 适配器
Adapter
(适配器)是将数据转换成 AdapterView 所需视图列表的重要桥梁。通过适配器,可以将不同类型,不同来源的数据统一适配成所需的统一样式的视图用于显示在 AdapterView 上。
Android 原生SDK中提供了两种类型的适配器实现,一种是SpinnerAdapter
(列表选择类型适配器),另外一种是 ListViewAdapter
(列表视图类型适配器)。
拓展兼容库或者第三方的适配视图控件多数都是定义了属于自己的适配器,实现方式可能会不同,但是设计思想都是遵循适配器模式设计的。
原生 Adapter 类继承结构类图:
相关子类说明:
适配器 | 简单介绍 |
---|---|
ArrayAdapter (opens new window) | 简单的数组适配器,一般用于显示一行文字的单个数据源场景 |
BaseAdapter (opens new window) | 适配器的通用实现的通用基类,可以在ListView(通过实现专用的ListAdapter接口)和Spinner(通过实现专用的SpinnerAdapter接口)中使用。 |
CursorAdapter (opens new window) | 将Cursor中的数据公开给ListView小部件的适配器 |
HeaderViewListAdapter (opens new window) | ListAdapter在ListView有头视图时使用 |
ListAdapter (opens new window) | 扩展适配器,它是ListView和支持列表的数据之间的桥梁 |
ResourceCursorAdapter (opens new window) | 创建XML文件中定义的视图的简单适配器 |
SimpleAdapter (opens new window) | 将静态数据映射到XML文件中定义的视图的简单适配器 |
SimpleCursorAdapter (opens new window) | 一个简单的适配器,可以将列从游标映射到XML文件中定义的textview或ImageViews |
SpinnerAdapter (opens new window) | 扩展适配器,它是Spinner及其数据之间的桥梁 |
WrapperListAdapter (opens new window) | 包装另一个列表适配器的列表适配器 |
默认SDK开发中,用的比较多的适配器基本上是:BaseAdapter、ListAdapter、ArrayAdapter。当然在一些拓展包中的适配控件或者自定义的适配控件使用自定义设计的Adapter。如:Viewpager 定义了自己的 PageAdapter,RecyclerView 定义了自己的 RecyclerView.Adapter 等等。
后面将针对开发中常用的几个适配视图以及对应的适配器进行详细的介绍。