本节重点讲解数据适配器(Adapter),Adapter的作用就是为GridView、ListView等界面控件与数据之间搭起一座桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。在Android API中内置了几个实现了ListAdapter的Adapter,它们分别是:BaseAdapter,SimpleAdapter(以Map的形式存储静态数据,可多态实现ListAdapter),SimpleCursorAdapter用于游标的形式查询结果)等。Adapter在Android应用程序开发中起着非常重要的作用,应用也非常广泛,它可看做是数据源和UI组件之间的桥梁,其中Adapter、数据和UI三者之间的关系,如图3-5所示。
图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需要重写的方法
这几个需要实现的方法在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)
图3-6 Adapter结构
图3-7 Adapter显示图片组示例代码运行结果
代码清单3-7 Adapter显示图片组示例(第3章\Demo_03_03)main.xml
代码清单3-8 Adapter显示图片组示例(第3章\Demo_03_03)MainActivity.java
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。