首页 理论教育 数据适配器:为GridView、ListView等控件搭建数据桥梁

数据适配器:为GridView、ListView等控件搭建数据桥梁

时间:2023-06-15 理论教育 版权反馈
【摘要】:本节重点讲解数据适配器,Adapter的作用就是为GridView、ListView等界面控件与数据之间搭起一座桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。图3-5 Adapter、数据和UI三者之间的关系而Adapter包含的子类有:BaseAdapter、ArrayAdapter及SimpleCusorAdapter等。通常需要实现getView()方法,为了便于数据处理,最好要重写getItemId()。如定义了可以通过数据源子项Id查找到该子项,获取数据源子项个数,判断数据源是否为空等方法。下面通过一个示例讲述Android适配器的使用方法。

数据适配器:为GridView、ListView等控件搭建数据桥梁

本节重点讲解数据适配器(Adapter),Adapter的作用就是为GridView、ListView等界面控件与数据之间搭起一座桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。在Android API中内置了几个实现了ListAdapter的Adapter,它们分别是:BaseAdapter,SimpleAdapter(以Map的形式存储静态数据,可多态实现ListAdapter),SimpleCursorAdapter用于游标的形式查询结果)等。Adapter在Android应用程序开发中起着非常重要的作用,应用也非常广泛,它可看做是数据源和UI组件之间的桥梁,其中Adapter、数据和UI三者之间的关系,如图3-5所示。

978-7-111-37968-3-Chapter03-17.jpg

图3-5 Adapter、数据和UI三者之间的关系

而Adapter包含的子类有:BaseAdapter、ArrayAdapter及SimpleCusorAdapter等。BaseAdapter是抽象类,实现了ListAdapter和SpinnerAdapter两个接口,当然它也可以直接给ListView和Spinner等UI组件直接提供数据。ArrayAdapter是从BaseAdapter派生出来的,具备BaseAdapter的所有功能,但ArrayAdapter更为强大,它实例化时可以直接使用泛型构造支持泛型操作。通常需要实现getView()方法,为了便于数据处理,最好要重写getItemId()。SimpleCusorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI控件的Id对应起来,如果要实现更复杂的UI也可以重写其他方法。

通常我们更多地继承BaseAdapter来编写自己的Adapter类,因为BaseAdapter类是其他Apdater类的基类。在实际运用过程中,扩展BaseAdapter类一般都需要重写表3-3所示的方法。

表3-3 自定义BaseAdapter需要重写的方法

978-7-111-37968-3-Chapter03-18.jpg

这几个需要实现的方法在Adapter类中的结构如图3-6所示,除了上述表中列出的方法,在Adapter类中还定义了许多方法,用来捕获数据源相关属性特征,以便操作该子项。如定义了可以通过数据源子项Id查找到该子项,获取数据源子项个数,判断数据源是否为空等方法。

自定义Adapter子类,就需要重写这几个方法,在这里进一步讲解getView()方法,它在Adapter类起到举足轻重的作用,主要是将获取数据后的View组件返回。比如,可以在此方法中读取到所定义的GridView中的每一行里ImageView传递过来的属性及数据,还可以读取到ListView中每一行里的TextView传递过来的属性及数据。

下面通过一个示例讲述Android适配器的使用方法。该示例的主要功能是在Gallery中显示一组图片,效果如图3-7所示。在功能中分两行显示,上一行是显示一组图片,下一行是当单击某一张图片的时候,放大选中的图片。

下面介绍如何通过xml布局实现Adapter显示图片组功能,如代码清单3-7至代码清单3-8所示。(www.xing528.com)

978-7-111-37968-3-Chapter03-19.jpg

图3-6 Adapter结构

978-7-111-37968-3-Chapter03-20.jpg

图3-7 Adapter显示图片组示例代码运行结果

代码清单3-7 Adapter显示图片组示例(第3章\Demo_03_03)main.xml

978-7-111-37968-3-Chapter03-21.jpg

代码清单3-8 Adapter显示图片组示例(第3章\Demo_03_03)MainActivity.java

978-7-111-37968-3-Chapter03-22.jpg

978-7-111-37968-3-Chapter03-23.jpg

978-7-111-37968-3-Chapter03-24.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈