深入理解Adapter
转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空)
一、ListView
ListView是Android开发过程中较为常见的组件之一,它将数据以列表的形式展现出来。一般而言,一个ListView由以下三个元素组成:
1.View:展示列表视图(一行显示的信息),通常是一个xml所指定的。大家都知道Android的界面基本上是由xml文件负责完成的,所以ListView的界面也理所应当的使用了xml定义。例如在ListView中经常用到的“android.R.layout.simple_list_item_1”等, 就是Android系统内部定义好的一个xml文件。
2.Adapter适配器:用于将不同的数据映射到View上。不同的数据对应不同的适配器,如ArrayAdapter,CursorAdapter, SimpleAdapter等, 他们能够将数组,指针指向的数据,Map等数据或基本组件映射到View上。也正是由于适配器的存在,使得ListView的使用相当灵活,经过适配器的处理后,在 view看来所有的数据映射过来都是一样的。
3.数据:具体的数据和资源。可以是字符串图片、Map映射等,通过适配器这些数据将会被现实到 ListView上。
总之,所有的数据和资源要显示到ListView上都通过适配器来完成。ArrayAdapter,CursorAdapter, SimpleAdapter为系统已有的适配器,可以将如数组、Cursor指向的数据(一般为数据库)、Map里的数据。
1.概要:Adapter是连接后端数据和前端视图显示的适配器接口,是数据和UI(View)之间的桥梁。通过适配器,可以将不同的数据映射并显示到View上。在常见的View(ListView、GridView)等地方都需要用到Adapter。对于Data、Adapter、View的关系,如下图所示:
(1)BaseAdapter适配器:为一个抽象类,使用该类可以实现更为复杂的ListView。通过文档可以看出,ArrayAdapter,CursorAdapter, SimpleAdapter都继承于BaseAdapter。所以通过继承BaseAdapter就可以完成自己的Adapter,可以将任何复杂组合的数据和资源,以任何你想要的显示效果展示处理。继承BaseAdapter之后,需要重写以下四个方法:getCount,getItem,getItemId,getView。但是,ArrayAdapter,CursorAdapter, SimpleAdapter则无须要全部重写上述四种方法。
(2)ArrayAdapter适配器:支持泛型操作,最为简单,只能展示一行字符串(即列表每行只能显示一行字符串)。
(3)SimpleAdapter适配器:有最好的扩充性,可以自定义出各种效果(字符串、图片、Map集),通常使用xml布局文件来指定视图(布局文件定义控制显示图片、字符串、Map集等内容)。
(4)SimpleCursorAdapter适配器:可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。
(1)先判断adapter有多少数据项,根据这个数据确定有多少item(列表项). -----getCount()方法实现
(2)确定每个item里加载哪个View. -----getView()方法实现
(3)向对应的View中加载需要显示的数据
4.ArrayAdapter实例分析
(1)开发基本思路
ArrayAdapter适配器支持泛型操作,
列表的每一项只能显示一串字符,不能显示图片等资源数据,使用List作为数据源。
*使用字符串数组作为数据源
a.实现一个字符串数组作为数据源(List集)(数组元素有几个,就有几个列表项)
b.实例化一个ArrayAdapter<String> 适配器对象,用于装配数据源到指定的View.
ArrayAdapter<String> adapter=new ArrayAdapter<String>(
this,
android.R.layout.simple_expandable_list_item_1,
strs
);
c.将ArrayAdapter适用于ListActivity的ListView