Android开发学习之Adapter
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的更多相关文章
- Android开发学习之LauncherActivity开发启动的列表
Android开发学习之LauncherActivity开发启动的列表 创建项目:OtherActivity 项目运行结果: 建立主Activity:OtherActivity.java [jav ...
- Android开发学习路线的七个阶段和步骤
Android开发学习路线的七个阶段和步骤 Android学习参考路线 第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和St ...
- Android开发学习之路-RecyclerView滑动删除和拖动排序
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
- Android开发学习路线图
Android开发学习方法: Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大.因此,一个好的学习方法对我们学习Android开发很重要. 在此建议, ...
- android开发学习笔记000
使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...
- Android开发学习总结(一)——搭建最新版本的Android开发环境
Android开发学习总结(一)——搭建最新版本的Android开发环境(转) 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是 ...
- 最实用的Android开发学习路线分享
Android开发学习路线分享.Android发展主导移动互联发展进程,在热门行业来说,Android开发堪称火爆,但是,虽然Android有着自身种种优势,但对开发者的专业性要求也是极高,这种要求随 ...
- Android开发学习必备的java知识
Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...
- Android开发学习之路--基于vitamio的视频播放器(二)
终于把该忙的事情都忙得差不多了,接下来又可以开始good good study,day day up了.在Android开发学习之路–基于vitamio的视频播放器(一)中,主要讲了播放器的界面的 ...
随机推荐
- 防范DDOS攻击脚本
防范DDOS攻击脚本 #防止SYN攻击 轻量级预防 iptables -N syn-flood iptables -A INPUT -p tcp --syn -j syn-flood iptables ...
- Fedora 21 设置开机启动脚本
sudo touch /etc/rc.d/rc.localsudo vim /etc/rc.d/rc.local 在/etc/rc.d/rc.local文件中写入, 然后使用:wq命令 保存并退出. ...
- vertical-align的深入学习
W3C官方对vertical-align属性的定义有4个方面: (1)vertical-align属性用于定义“周围的文字.inline元素以及inline-block元素”相对于该元素基线的垂 ...
- PHP设计模式之:装饰模式
<?php// 人类class Person{ private $name; public function __construct($name) { $this ...
- [转] 《高性能HTML5》读后整理的Web性能优化内容
读后感 先说说<高性能HTML5>这本书的读后感吧,个人觉得这本书前两章跟书的标题完全搭不上关系,或者说只能算是讲解了“高性能”这三个字,HTML5完全不见踪影.个人觉得作者应该首先把HT ...
- webapp框架—学习AngularUI2(demo改造)
目的:把AngularUI的模板应用到“桂电在线”上 步骤如下: 按功能表修改demo界面 学习angularUI如何加载全部页面,为了设置自定义加载模板,在demo/demo.js中找到这一段 // ...
- Js 获取 本周、本月起始时间
涉及到显示本月或本周相关信息,又不想让php去判断,只好直接用js去计算,麻烦了好一阵,还是老老实实的看了下js的日期函数.现总结一下: //计算本周起始日期,并以 Y-m-d 形式返回. fu ...
- python 包导入规则
python 包导入规则,恶心了一天,终于搞清楚了 1.目录 speed data __init__.py __init__.py static templates view __init__.py ...
- python核心编程2第二章课后练习
2-1 变量, print 和字符串格式化运算符.启动交互式解释器.给一些变量赋值(字符串,数值等等)并通过输入变量名显示它们的值.再用 print 语句做同样的事.这二者有何区别? 也尝试着使用字符 ...
- 鸟哥的linux私房菜——第20章 启动流程、模块管理与loader
20.1 Linux启动流程分析 Linux启动过程: 按下开机电源后计算机硬件主动读取BIOS来加载硬件信息以及硬件系统的自我测试,之后系统会主动读取第一个可启动的设备(由BIOS设置),此时就可以 ...