Adapter是指适配器的意思,在Android中,适配器扮演者重要的角色,是UI与Data实现绑定的一个桥梁。Adapter负责创建和显示每个项目的子View和提供对下层数据的访问。支持Adapter绑定的UI控件必须扩展AdapterView抽象类。默认情况下,Android为我们提供了下面几种常见的数据适配器:

1、ArrayAdapter<T>。这是一个支持绑定任意对象数组到列表的数据适配器。这个适配器默认的View绑定是一个TextView。当这个TextView被使用的时候,它将调用这个数组中每一个对象的toString()方法。如果需要选择性地显示数组中对象的信息,需要重写toString()方法,来满足定制化需求;如果需要显示其它类型的View,需要通过重写getView()方法来实现。

2、BaseAdapter。这是一个共同的基类的公共实现适配器,可以在同时使用的ListView(通过实现专业化 ListAdapter接口)和微调(通过实现专业化SpinnerAdapter接口)。总之,通过继承BaseAdapter,你可以自由定制自己的数据适配。

3、SimpleAdapter。这是一个用来绑定Map类型数据的数据适配器。

4、ListAdapter。ListAdapter是一个之间的桥梁的ListView和数据备份的列表。频繁的数据来自一个游标,但不是必需的。ListView中可以显示,只要是包裹在一个ListAdapter任何数据。

5、CursorAdapter。CursorAdapter是用来访问Cursor的数据适配器,要求Cursor必须包含一个名为“_id”的字段,否则这个类将无法正常工作。

6、SimpleCursorAdapter。用于将光标和在一个XML文件中定义TextViews或ImageViews实现绑定。常常用于数据库的数据绑定。

写这篇文章的原因是是在学习安卓的过程中,碰到了一个很诡异的问题。在郭宏志的《Android应用开发详解》一书中,有一段代码用于在用户提交完数据以后跳转到一个新的页面(Activity)来显示全部的提交数据,这段代码是这样写的:

   super.onCreate(savedInstanceState);
DBHelper=new DataBaseHelper(this);
Cursor c=DBHelper.Query();
String[] From=new String[]{DBHelper.KEYNAME,DBHelper.KEYAGE,DBHelper.KEYSEX};
int[] To=new int[]{R.id.Layout_Name,R.id.Layout_Age,R.id.Layout_Sex};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.layout_list, c, From, To);
lv=getListView();
lv.setAdapter(adapter);

但是在我实际调试的时候,每次运行到这里都会报错,一直不知道是什么原因,今天偶然发现原来还有个ListAdapter类,一查原来是一个接口,而且ArrayAdapter、SimpleAdapter竟然都是这个接口的实现类。直觉告诉我,应该把前面的SimpleCursorAdapter改成ListAdapter,结果程序顺利运行了。以前用这两个类的时候,都是直接用它的实现类的,都没什么问题啊,为什么这里就不行了呢,而且更杯具的是源代码中编译出来的程序文件我装手机上顺利运行啊,唯一不同的是API版本不同而已啊。这让我很郁闷,索性看了Android的API文档,查到了上面那些内容,除非SimpleCursorAdapter和ListAdapter一点关系都没有,否则我真的不知道是什么原因了。唉,Java中的类怎么这么多啊,一点都不系统啊,记起来好麻烦,不想.NET中的类,你总知道它在什么地方,是什么用途。

Android开发学习之Adapter的更多相关文章

  1. Android开发学习之LauncherActivity开发启动的列表

    Android开发学习之LauncherActivity开发启动的列表 创建项目:OtherActivity 项目运行结果:   建立主Activity:OtherActivity.java [jav ...

  2. Android开发学习路线的七个阶段和步骤

    Android开发学习路线的七个阶段和步骤           Android学习参考路线     第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和St ...

  3. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  4. Android开发学习路线图

    Android开发学习方法: Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大.因此,一个好的学习方法对我们学习Android开发很重要. 在此建议, ...

  5. android开发学习笔记000

    使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...

  6. Android开发学习总结(一)——搭建最新版本的Android开发环境

    Android开发学习总结(一)——搭建最新版本的Android开发环境(转) 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是 ...

  7. 最实用的Android开发学习路线分享

    Android开发学习路线分享.Android发展主导移动互联发展进程,在热门行业来说,Android开发堪称火爆,但是,虽然Android有着自身种种优势,但对开发者的专业性要求也是极高,这种要求随 ...

  8. Android开发学习必备的java知识

    Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...

  9. Android开发学习之路--基于vitamio的视频播放器(二)

      终于把该忙的事情都忙得差不多了,接下来又可以开始good good study,day day up了.在Android开发学习之路–基于vitamio的视频播放器(一)中,主要讲了播放器的界面的 ...

随机推荐

  1. 一段C++代码想到的问题

    今天在学习<Unix环境高级编程>,第七章进程环境给出了一个进程的内存分布示意图,从下往上依次为“正文段->初始化数据->未初始化数据(默认初始化为0)->堆(从低地址到 ...

  2. Java控制台版推箱子

    import java.util.Scanner; public class b { public static void main(String[] args) { Scanner input = ...

  3. python中的函数的参数和可变参数

    最近在搞python的过程中需要用到给函数传可变参数..所以去网上找前人的帖子学习了一下 为了尊重原作者,这里附上链接:http://www.cnblogs.com/tqsummer/archive/ ...

  4. 数据结构练习 01-复杂度2. Maximum Subsequence Sum (25)

    Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to be { Ni, ...

  5. UFLDL教程(四)之Softmax回归

    关于Andrew Ng的machine learning课程中,有一章专门讲解逻辑回归(Logistic回归),具体课程笔记见另一篇文章. 下面,对Logistic回归做一个简单的小结: 给定一个待分 ...

  6. 流的概念(来自MSDN)

    本文来源 定义 提供字节序列的一般视图.Provides a generic view of a sequence of bytes. 流涉及三个基本操作 Streams involve three ...

  7. Arduino语言学习记录(持续更新)

    几天前某宝买了一套,这几天没工夫.今天开始学学这个“玩具”. 1.Arduino的变量数据类型: 数据类型  数据类型 RAM 范围 void keyword N/A N/A boolean 1 by ...

  8. <jsp:forward>、requestDispatcher和sendRedirect()的区别

    1.会话信息保存在服务器内存上,可以断续访问,和cookie相比,其保存在服务器上. 2.男人就像蓝牙:只有在你接近时,他才会找上你.当你离开后,他便又去找其他的"设备"了.女人就 ...

  9. Web-Scale-IT 到底是啥?

    Gartner 对 2015 年 10 大 IT 趋势的预测中有一个词条为:Web Scale IT.我们跟随 Matthias Ankli 来了解一下究竟什么是 Web Scale IT.本文译自 ...

  10. Candies(差分约束)

    http://poj.org/problem?id=3159 题意: flymouse是幼稚园班上的班长,一天老师给小朋友们买了一堆的糖果,由flymouse来分发,在班上,flymouse和snoo ...