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 中 ...
随机推荐
- bzoj1295: [SCOI2009]最长距离
bfs最短路. 写的真丑... #include<cstdio> #include<algorithm> #include<cstring> #include< ...
- Oracle排序BUG
在今天项目开发中,遇到一个奇怪的问题,运用Oracle自身排序,然后将排序结果进行分页展示到前台时,发现数据有重复的现象. 这是数据表需要排序的全部结果,执行脚本:select * from ajb ...
- windows ping RPi 2B
/************************************************************************* * windows ping RPi 2B * 声 ...
- 【转】iOS中设置导航栏标题的字体颜色和大小
原文网址:http://www.360doc.com/content/15/0417/11/20919452_463847404.shtml iOS中设置导航栏标题的字体颜色和大小,有需要的朋友可以参 ...
- 【转】【cocos2d-x教程】如何使用WebSocket
介绍 WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术.在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快 ...
- DELPHI 中的Delay函数,利用GetTickCount和Application.ProcessMessages构建
作者 关劲松 delphi 开发中有些时候需要停留片刻,等待界面输入,或异步操作完成,如果使用sleep函数的话,整个程序都会停顿,界面还会出现冻结的情况.因此需要自行编写一个 ...
- 《Python基础教程(第二版)》学习笔记 -> 第六章 抽象
抽象和结构 本章将会介绍如何让将语句组织成函数,还会详细介绍参数(parameter)和作用域(scope)的概念,以及递归的概念及其在程序中的用途. 创建函数 函数可以调用,它执行某种行为,并返回某 ...
- 【译】 AWK教程指南 4通过文本内容和对比选择指定的记录
Pattern { Action }为awk中最主要的语法.若某Pattern的值为真则执行它后面的 Action. awk中常使用"关系表达式" (Relational Expr ...
- Docker系列(六)路由打通网络示例
运行环境 两台虚拟机IP分别为:192.168.0.103(简称:A主机).192.168.0.104(简称:B主机) 操作系统:Centos 7 Docker版本:1.8 Mysql镜像配置 1.在 ...
- 【AC自动机】专题总结
刷了一星期+的ac自动机的题目 做一个总结~ 我的ac自动机是之前省选的时候看老师给的一个网页上学的 由于找不到原文 就贴个转载的地址吧 - - http://hi.baidu.com/winterl ...