Android学习笔记(22):AdapterView与Adapter

来源:互联网 发布:工具箱知乎 编辑:程序博客网 时间:2024/05/17 23:56

AdapterView继承自ViewGroup,是一个抽象基类,作为容器使用,容器内是多个列表项,列表项有相似的形式,列表项的内容由Adapter提供。调用AdapterViewsetAdapter(Adapter)方法设置内容。

 

AdapterView派生了三个子类:ABSListViewAbsSpinnerAdapterViewAnimator,这也是抽象类。

 

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 SimpleAdaptercontext:一般指当前Activity对象,data:数据源变量,layout:每个列表项显示的布局,new String[]{}:数据源中的“键”,new int[]{}:显示数据源的控件ID)

(3)自定义Adapter类 adapter = new 自定义Adapter类构造方法;

3:绑定Adapter对象到Adapter

AdapterView对象.setAdapterAdapter对象);

 

继承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视图

0 0