AdapterView为基类的一组组件。
AdapterView都可动态生成一组View(可包含多个字View)
ViewGroup
↑
AdpaterView(相当于一个抽象基类,很少直接使用,通常使用它的子类)
↗ ↑ ↖
AbsListView AbsSpinner AdapterViewAnimator(动画)
↗ ↖ ↑ ↖ ↗ ↖
ListView GridView Spinner Gallery AdapterViewFlipper StackView
这组控件有个共同的特征:它们都继承了ViewGroup(容器),它们都会显示多个组件,只是多个组件的组织形式不同。
这组组件在用法上,几乎是相似的,都可通过如下方法来设置所包含的多个子组件:
setAdapter(Adapter a);
而Adapter就负责为上面的6个组件提供对应的子组件。
Adapter是一个接口:
Adpater
↗ ↖
ListAdapter SpinnerAdapter
↖ ↗
BaseAdapter (抽象基类)
↗ ↑ ↖
ArrayAdapter CursorAdapter SimpleAdapter
↑
ResourceCursorAdapter
↑
SimpleCursorAdapter
BaseAdapter : 通常程序可通过继承BaseAdapter、并实现它的抽象方法来得到自己的Adapter
一共要实现4个抽象方法:
getCount():该方法的返回值决定该Adapter将会包含多少个列表项。
getItemId():该方法的返回值决定了每个列表项的id
getItem(): 该方法的返回值决定了每个列表项的内容。其实很少重写。
getView(int position, View convertView, ViewGroup parent):决定每个列表项是什么组件。
ArrayAdapter:简单、易用的。 每个列表项只能是TextView
最简单的Adapter。创建ArrayAdapter时需要3个参数。
ArrayAdapter的第1个参数是Context,
第2个参数代表了每个列表项的控件,
第3个参数控制要包含多少个列表项,
SimpleAdapter: 其实功能非常强大,其实不简单。
构造器参数:
第1个参数: Context
第2个参数: 数据 List<map<String,Object>> datas
第3个参数: xml资源文件 R.layout....
第4个参数: 控制从datas中取出哪些数据 与map中的 key一致
第5个参数: 布局文件的id 控制取出的数据要填充哪些界面元素。
SimpleCursorAdapter:类似于SimpleAdapter。需要与数据库查询记录集合使用。
只不过SimpleAdapter的数据是一个集合元素为Map的List。
SimpleCursorAdapter的数据是一个Cursor
容器:
ListView:
android:dividerHeight:设置分隔条的高度。
android:divider:设置分隔条的颜色。
ListView最简单的用法是指定entries属性。这种方式太简陋了,基本上无法定制列表项,所以用得
特别少。
GridView:相当于一个增强版的ListView。
ListView相当于一个只有一列的GridView。
它可指定如下属性:
- numColumns:指定列数量。
- columnWidth:指定列宽。
- horizontalSpacing:指定列表项之间的水平间距。
- verticalSpacing:指定列表项之间的垂直间距。
Spinner :
android:prompt:设置提示信息。
android:spinnerMode:设置spinner的模式。支持对话框或下拉列表模式。
StackView:还是包含多个组件。多个组件重叠在一起。但会露出一截。
AdapterViewFlipper: 还是可以包含多个组件。
多个组件重叠在一起。
程序可通过startFlipping():showNext()、showPrevious()来显示重叠的组件。