AdapterView继承自ViewGroup,是一个抽象基类,作为容器使用,容器内是多个列表项,列表项有相似的形式,列表项的内容由Adapter提供。调用AdapterView的setAdapter(Adapter)方法设置内容。
AdapterView派生了三个子类:ABSListView、AbsSpinner和AdapterViewAnimator,这也是抽象类。
AbsListView支持的XML属性和相关方法:
Attribute Name |
Related Method |
Description |
android:cacheColorHint |
|
指示该列表总是在固定的单色、不透明的背景下绘制。这允许列表优化其绘制过程 |
android:choiceMode |
|
设置AbsListView的选择行为: none:不显示任何选中项 singleChoice:允许单选 multipleChoice:允许多选 multipleChoiceModal:允许多选 |
android:drawSelectorOnTop |
setDrawSelectorOnTop(boolean) |
设置为true,选中的列表项显示在上面 |
android:fastScrollEnabled |
|
设置是否允许快速滚动,设置为true,将会显示滚动图标,允许用户拖动图标快速滚动 |
android:listSelector |
setSelector(int) |
指定被选中的列表项上绘制的Drawable |
android:scrollingCache |
|
当为真时,列表滚动使用绘图缓存。该选项使渲染更快,但占用更多的内存。 默认值为真 |
android:smoothScrollbar |
setSmoothScrollbarEnabled(boolean) |
为真时,列表会使用更精确的基于条目在屏幕上的可见像素高度的计算方法。 默认该属性为真,如果你的适配器需要绘制可变高的条目,他应该设为假。 当该属性为真时,你在适配器在显示变高条目时,滚动条的把手会在滚动的 过程中改变大小。当设为假时,列表只使用适配器中的条目数和屏幕上的 可见条目来决定滚动条的属性 |
android:stackFromBottom |
|
用于 ListView 和 GridView,指示他们的内容栈从底部开始排列列表项 |
android:textFilterEnabled |
|
设为真时,列表会过滤根据用户的要求,过滤结果集。列表的适配器必须实现了 Filterable 接口,才能使其可用 |
android:transcriptMode |
|
设置组件的滚动方式: disabled:默认值,关闭滚动 normal:收到数据改变通知,且最后一个列表可见时,将会滚动到底部 alwaysScroll:总会自动滚动到底部 |
Adapter接口及其实现类的使用见上一篇转载的文章。
这里在总结一下:
1.用android:entries设置内容。
2.ArrayAdapter:简单、易用。数组和List集合作为数据源。
3.SimpleAdapter:功能强大,数据源List<Map<“键”,“值”>>形式的数据。
4.SimpleCursorAdapter:与SimpleAdapter相似,用于包装Cursor提供的数据。
5.BaseAdapter:通常用于扩展,可以继承得到自定义的Adapter。
数据填充
1:声明AdapterView对象,根据ID利用findViewById方法找到此对象
2:声明Adapter对象,根据构造方法实例化此对象。具体如下:
(1)ArrayAdapter<数据类型> adapter = new ArrayAdapter<数据类型>(context:一般指当前Activity对象,layout:每个列表项显示的布局,data:数据源变量);
(2)SimpleAdapter adapter = new SimpleAdapter(context:一般指当前Activity对象,data:数据源变量,layout:每个列表项显示的布局,new String[]{}:数据源中的“键”,new int[]{}:显示数据源的控件ID);
(3)自定义Adapter类 adapter = new 自定义Adapter类构造方法;
3:绑定Adapter对象到Adapter上
AdapterView对象.setAdapter(Adapter对象);
继承BaseAdapter自定义Adapter需要重写的方法:
(1) int getCount():返回的是数据源对象的个数,即列表项数
(2) Object getItem(int position):返回指定位置position上的列表
(3) long getItemId(int position):返回指定位置处的行ID
(4) View getView():返回列表项对应的视图,方法体中需要:
1.实例化视图填充器
2.用视图填充器,根据Xml文件,实例化视图
3.根据布局找到控件,并设置属性
4.返回View视图