android学习日记18--Adapter简介
一、Adapter
1、简述
最近学的GridView和Gallery 都有用到Adapter适配器,发现它貌似蛮重要的。专门上网搜了下有关Adapter的资料。
android绝大多数应用是JAVA语言编写的,Adapter在JAVA里是专门的一种设计模式,目的是使两个原本没有关联的类结合一起使用。
比如水管A是25mm的,水管B是40mm的,假设水管厚度不计,怎样连接两种水管一起使用?这时就需要适配器C,适配器C类似水管,
一头25mm,另一头40mm,这样就可以连接A、B水管一起使用了。
2、Android中的Adapter
Android里的Adapter是View视图与data数据之间的桥梁,Adapter提供对数据的访问,也负责为每一项数据产生一个对应的视图。下图是Data、Adapter、View三者的关系:

Andpter类结构体系:

在这些适配器中,BaseAdapter由于比较灵活用得最多,SimpleCursorAdapter貌似也挺常用的,允许绑定游标来显示数据。
3、Adapter重要方法
无论重写哪种Adapter,一般都要重写底下四个方法:
// 所表示的数据的项数
int getCount(); // 返回指定位置的数据项
Object getItem(int position); // 返回指定位置的数据项的ID
long getItemId(int position); // 为每一个数据项产生相应的视图
View getView(int position, View convertView, ViewGroup parent);
有网友查看源码发现其中getItem(),和getItemId()这两个方法对于android来讲是没有用的,单纯是为了客户端调用的方便。
就上我上一篇重写getItem()和getItemId()来设置初始position发现不起作用。
4、简单例子:
关于扩展BaseAdapter自定义的代码参考ListView、GridView、Gallery文章都有,这边不再贴出来。主要贴出如何构造一个SimpleCursorAdapter来显示联系人信息代码:
listView = new ListView(this);
// 系统里的表
Cursor cursor = getContentResolver().query(People.CONTENT_URI, null,
null, null, null); startManagingCursor(cursor); ListAdapter listAdapter = new SimpleCursorAdapter(this,//上下文
android.R.layout.simple_expandable_list_item_1,//要显示ListView的样式 cursor,// 数据源 new String[] { People.NAME },// 对应的字段 new int[] { android.R.id.text1 });// 显示哪个控件上 listView.setAdapter(listAdapter); setContentView(listView);
新增两个联系人,运行效果:

android学习日记18--Adapter简介的更多相关文章
- android学习日记22--Animation动画简介
Animation动画主要有两种:帧动画(Frame Animation)和补间动画(Tween Animation).补间动画主要包括对位置.角度.尺寸等属性的变化,而帧动画则是通过若干帧图片轮流切 ...
- android学习日记05--Activity间的跳转Intent实现
Activity间的跳转 Android中的Activity就是Android应用与用户的接口,所以了解Activity间的跳转还是必要的.在 Android 中,不同的 Activity 实例可能运 ...
- android学习日记03--常用控件Dialog
常用控件 9.Dialog 我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框 对话框,要创建对话框之前首先要创建Bui ...
- android学习日记03--常用控件checkbox/radiobutton
常用控件3.checkbox 复选框,确定是否勾选,点击一下勾选,点击第二下取消,当有一系列备选项时适合用checkbox控件,方便用户提交数据. 贴上例子Activity的java代码 packag ...
- android学习日记03--常用控件button/imagebutton
常用控件 控件是对数据和方法的封装.控件可以有自己的属性和方法.属性是控件数据的简单访问者.方法则是控件的一些简单而可见的功能.所有控件都是继承View类 介绍android原生提供几种常用的控件bu ...
- Android学习系列(18)--App工程结构搭建
本文算是一篇漫谈,谈一谈关于Android开发中工程初始化的时候如何在初期我们就能搭建一个好的架构. 关于android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的 ...
- android学习日记02--Activity简介
一.Activity活动 学习Android,第一个都会接触Activity滴,Activity表示一个用户界面,是Android应用程序的入口,可以同时有多个界面,但只会显示栈顶的界面. Activ ...
- Android学习之一:Cygwin简介
为了能够一窥Android底层的东东,还是要搭建编译Android的环境.虽有Ubuntu和Suse系统,无奈总感觉在不同的系统下切来切去很是不便.在Windows工作学习,要编译Android,就不 ...
- Android学习之在Adapter中调用Fragment
•前言 在学习<第一行代码>,4.5 小节--一个简易版的新闻应用的时候: 在为 RecyclerView 创建适配器的时候: 作者直接在 NewsTitleFragment.java 中 ...
随机推荐
- 三维软件转Unity的系统单位设置研究
Unity的系统单位为米,其他3D软件的模型导入,而保持和Unity的比例一致是非常重要的,下面对各软件进行测试: ㈠. 3dsmax 转 Unity的比例为100:1:也就是说Unity单位是3ds ...
- ASP.NET的六种验证控件的使用
C# 中的验证控件分为一下六种 :1 CompareValidator:比较验证,两个字段的值是否相等,比如判断用户输入的密码和确认密码是否一致,则可以用改控件: 2 CustomValidator ...
- Samba 安全漏洞
漏洞名称: Samba 安全漏洞 CNNVD编号: CNNVD-201403-239 发布时间: 2014-03-17 更新时间: 2014-03-17 危害等级: 中危 漏洞类型: 信任管理 威 ...
- shell 全局和局部变量
/******************************************************************** * shell 全局和局部变量 * 声明: * 到目前为止, ...
- 【 D3.js 进阶系列 】 进阶总结
进阶系列的文章从去年10月开始写的,晃眼又是4个多月了,想在年前总结一下. 首先恭祝大家新年快乐.今年是羊年吧.前段时间和朋友聊天,聊到十二生肖里为什么没猫,我张口就道:不是因为十二生肖开会的时候猫迟 ...
- 装饰器模式(Decorator)
转自http://blog.csdn.net/hust_is_lcd/article/details/7884320 1.认识装饰器模式 装饰模式能够实现动态的为对象添加功能,是从一个对象外部来给对象 ...
- service name和SID的区别
数据库名(DB_NAME).实例名(Instance_name).以及操作系统环境变量(ORACLE_SID) 在ORACLE7.8数据库中只有数据库名(db_name)和数据库实例名(instan ...
- Hibernate4.x之映射关系--继承映射
Hibernate的继承映射可以理解为持久化类之间的继承关系.例如:人和学生之间的关系.学生继承了人,可以认为学生是一个特殊的人,如果对人进行查询,学生的实例也将被得到. Hibernate支持以下三 ...
- 文件I/O操作(1)
linux系统调用和用户编程接口(api) 系统调用是指在操作系统提供给用户程序调用的一组“特殊”的接口,用户程序可以通过这组特殊的接口来获取操作系统内核提供的服务,例如用户可以通过进程控制相关的系统 ...
- DELL R710服务器可以安装的VMWare ESX Server 4.1 全套下载带注册码
随着R710的停产,R720随之面世,但DELL R720服务器只支持vmware esxi5.0以上,DELL客户经理给了一套系统安装后序列号无法解决,还是用4.1好了,却又发现怎么都无法安装.按网 ...