Android开发学习之常见适配器总结
来源:互联网 发布:哥伦比亚统计学 知乎 编辑:程序博客网 时间:2024/06/10 03:04
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开发学习之常见适配器总结
- Android开发之适配器
- Android开发之适配器ListView
- Android学习笔记之适配器
- Android学习之适配器BaseAdapter
- android学习之自定义适配器
- 【Android-II】Android开发之常见错误总结
- 项目开发总结之通用适配器
- android常见三个适配器
- Android 进阶之路:常见设计模式之适配器模式
- Android开发之ListView适配器优化
- Android开发之适配器模式初探
- android开发之ListView GridView适配器架构
- android开发笔记之打造终极适配器
- android开发之适配器相关介绍
- Android开发之实现RecyclerView万能适配器
- Android开发之定义万能适配器
- Android学习之Bluetooth开发总结
- xcode 设置编码区背景颜色为淡绿色
- Ubuntu Server 12.10下安装配置PyDev
- Git for Windows 终端字体警告
- 视频: 千重浪Linux系统调试技术培训03-01_basic_cpu_interrupt
- 单总体分布卡方拟合优度检验
- Android开发学习之常见适配器总结
- JSTL标签引入
- CSS伪类
- mysql 预处理
- IOS导航栏的简单用法以及自定义实现例程
- Unable to cast object of type 'System.Web.HttpApplication' to type 'Microsoft.Practices.CompositeWeb
- 51单片机中的定时器和计数器
- (Java)统计随机产生的字母各自出现次数
- 两分类变量相互独立的检验