`

Android的adapter总结和深入研究

阅读更多
Android的adapter总结和深入研究

Adapter是把数据和用户界面视图绑定的桥梁类。Adapter负责创建用来表示父视图中的每一个条目的子视图,并且提供对底层数据的访问。
支持Adapter绑定的用户界面必须对AdapterView抽象类进行拓展。也可以创建新的由AdapterView派生的控件,创建新的Adapter类绑定他们。

两个最通用的本地Adapter
ArrayAdapter ArrayAdapter使用泛型来把Adapter视图(View)绑定到一个指定类的对象的数组。默认情况下,ArrayAdapter使用数组中每个对象的toString值来创建和填充文本视图。

SimpleCursorAdapter SimpleCursorAdapter可以把一个布局中指定的视图和内容提供器查询返回的游标列绑定在一起。
定制ArrayAdapter
默认情况下,ArrayAdapter将使用它绑定到的对象数组的toString值来填充指定布局中可用的TextView
最常见的例子便是ListView
我们在定义一个ListView组件后,在向ListView组件装载数据之前需要创建一个Adapter对象,

ArrayAdapter<String> AdapterName = new ArrayAdapter<String>(
this,
android.R.layout.simple_list_itme_1,
data);
以上代码中创建了一个android.wedget.ArrayAdapter 对象。ArrayAdapter类的构造方法需要一个android.content.Context对象,因此传入当前Activity的对象实例(this)作为ArrayAdapter类的构造方法的第一个参数值。除此之外,ArrayAdapter还需要完成:
指定列表项模板(第二个参数)
指定列表项中的数据。(第三个参数)
在创建玩Adapter对象后,调用setAdapter方法,ListView组件的每一个列表都会使用simple_list_item_1.xml文件定义的模板来显示,并将data数组中的每一个元素复制给每一个列表项

下面我们来讨论下定制ArrayAdapter
在大多数情况下,我们都要定制用于表示每个视图的布局。所以,需要使用特定类型的变体Adapter来扩展ArrayAdapter,并重写getView方法来向布局视图分配对象属性。
getView方法用于构造,扩充和填充将在父AdapterView类(如ListView)中显示的视图,该父AdapterView类使用这个Adapter绑定到底层的数组。
getView方法接收描述要显示的条目的位置,要更新的视图(或null),以及将包含这个视图的视图组作为参数。调用getItem将返回存储在底层数组的指定索引位置的值。
例如对与ListView来说:
自定义的Adapter类一般需要从android.widget.BaseAdapter类继承。在BaseAdapter类中有两个重要方法:getView和getCount。其中ListView在显示某一列表项是会调用getView方法返回要显示的列表项的View对象,这一点我们上面已经提到了。getCount方法返回当前ListView组件中列表项的总数。
注意:列表项的View对象一定要在getView方法中创建。不能事先创建好View对象,然后再getView方法中返回这些View对象。如果这样做,系统可能会出现一些异常现象

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics