在之前的博客我也讲过 Adapter 和 inflater,但发现讲的不够清楚,好多读者看后有疑问,今天就结合API单独讲一次。

Adapter :

  An Adapter object acts as a bridge between an AdapterView and the underlying data for that view. The Adapter provides access to the data items. The Adapter is also responsible for making a View for each item in the data set. 

  意思是:适配器对象作为一个adapterview和底层数据、视图之间的桥梁。适配器提供对数据项的访问。适配器还负责对数据集中的每个项目进行视图制作。

那什么是AdapterView

  内容一般是包含多项相同格式资源的列表,如ListView - 列表视图控件、Gallery - 缩略图浏览器控件、GridView - 网格控件、Spinner - 下拉列表控件、AutoCompleteTextView - 自动提示文本框、ExpandableListView - 支持展开/收缩功能的列表控件等。这些控件内容不能通过ListView.add的形式添加列表项,需指定一个Adapter对象,通过它获得显示数据。

  其中:

      ListView             列表,其中只能含有一个控件TextView


      Spinner             下拉列表,给用户提供选择


      Gallery               缩略图,已经被水平的ScrollView和ViewPicker取代,但也还算常用,是一个可以把子项以中心锁定,水平滚动的列表


      GridView              网格图,以表格形式显示资源,可以左右滑动的


Adapter 分类:


  ArrayAdapter<数据类型> adapter = new ArrayAdapter<数据类型>(context:一般指当前Activity对象,layout:每个列表项显示的布局,data:数据源变量);


  SimpleAdapter adapter = new SimpleAdapter(context:一般指当前Activity对象,data:数据源变量,layout:每个列表项显示的布局,new String[]{}:数据源中的“键”,new int[]{}:显示数据源的控件ID);


  自定义Adapter类 adapter = new 自定义Adapter类构造方法


绑定AdapterView对象到Adapter上

  AdapterView对象.setAdapter(Adapter对象); 如:ListView.setAdapter(MyAdapter);

inflater

LayoutInflater inflater = MainActivity.this.getLayoutInflater();
View view;
if (convertView==null){
view = inflater.inflate(R.layout.item, null);
}else{
view = convertView;
}

  在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。

具体作用:

   1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;
   2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。
 
获得 LayoutInflater 实例的三种方式

   1. LayoutInflater inflater = Activity.this.getLayoutInflater();//调用Activity的getLayoutInflater() 
   2. LayoutInflater inflater = LayoutInflater.from(context);  
   3. LayoutInflater inflater =  (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

知识点就这样,文档下载:Android官方API  http://pan.baidu.com/s/1dFvDhFr

  Be nice to people on the way up, because you'll need them on your way down.

Android 查缺补漏之Adapter 和 LayoutInflater的更多相关文章

  1. Android查缺补漏(View篇)--自定义 View 的基本流程

    View是Android很重要的一部分,常用的View有Button.TextView.EditView.ListView.GridView.各种layout等等,开发者通过对这些View的各种组合以 ...

  2. Android查缺补漏(View篇)--事件分发机制源码分析

    在上一篇博文中分析了事件分发的流程及规则,本篇会从源码的角度更进一步理解事件分发机制的原理,如果对事件分发规则还不太清楚的童鞋,建议先看一下上一篇博文 <Android查缺补漏(View篇)-- ...

  3. Android查缺补漏(IPC篇)-- 进程间通讯基础知识热身

    本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8479282.html 在Android中进程间通信是比较难的一部分,同时又非常 ...

  4. Android查缺补漏(IPC篇)-- Bundle、文件共享、ContentProvider、Messenger四种进程间通讯介绍

    本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8387752.html 进程间通讯篇系列文章目录: Android查缺补漏(IP ...

  5. Android查缺补漏(IPC篇)-- 款进程通讯之AIDL详解

    本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8436529.html 进程间通讯篇系列文章目录: Android查缺补漏(IP ...

  6. Android查缺补漏(IPC篇)-- 进程间通讯之Socket简介及示例

    本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8425736.html 进程间通讯篇系列文章目录: Android查缺补漏(IP ...

  7. Android查缺补漏(线程篇)-- IntentService的源码浅析

    本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8975114.html 在Android中有两个比较容易弄混的概念,Servic ...

  8. Android查缺补漏(IPC篇)-- 进程间通讯之AIDL详解

    本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8436529.html 进程间通讯篇系列文章目录: Android查缺补漏(IP ...

  9. Android查缺补漏--Activity生命周期和启动模式

    一.生命周期 onCreate():启动Activity时,首次创建Activity时回调. onRestart():再次启动Activity时回调. onStart():首次启动Activity时在 ...

随机推荐

  1. contiki-rime-单跳单播

    rucb是单跳单播的最顶层,将数据以块为单位进行传输(Bulk transfer). ruc,Reliable communication,保证可靠通信,主要实现确认和序列功能. suc,Stubbo ...

  2. String根据、拆分

    String cla="信1305.信1304.信1204.信1103.信1403"; while(cla.contains(".")){ int a=cla. ...

  3. centos 安装mongodb

    原文引用:http://blog.chinaunix.net/uid-24250828-id-3770298.html 官方网站: http://www.mongodb.org/ MongoDB 安裝 ...

  4. Unity3d copy gameobject from one scene to another

    scene-copy-game-objects-from-one-scene-to-anotherhttp://forum.unity3d.com/threads/scene-copy-game-ob ...

  5. 【原创】基于SVM作短期时间序列的预测

    [面试思路拓展] 对时间序列进行预测的方法有很多, 但如果只有几周的数据,而没有很多线性的趋势.各种实际的背景该如何去预测时间序列? 或许可以尝试下利用SVM去预测时间序列,那么如何提取预测的特征呢? ...

  6. Dedecms有效防止采集的两个实用办法

    现在的采集真是无处不在,尤其是对一些原创性站点,真是烦透了这些采集的人们,如何预防和防止采集呢,站长们!今天先说一下dedecms防采集的办法. 1.随机模版 方法:你多复制N多模版,在body标记附 ...

  7. C++回溯法走迷宫

    #include <iostream> #include <iomanip> #include <cstdlib> using namespace std; #de ...

  8. trie树的建立方法汇总

    方法一:孩子兄弟表示法 即对于某一个点,记录他的第一个孩子以及他的同父亲的下一个儿子. 具体代码如下: #include <cstdio> #include <cstring> ...

  9. C#如何通过Socket的方式获取httponly cookie

    正常情况下C#可以使用HttpWebRequest.HttpWebResponse和CookieContainer类来获取Cookie,但是当Cookie设置为httponly,我们就不能用上面的方法 ...

  10. html快速入门(基础教程+资源推荐)

    1.html究竟是什么? 从字面上理解,html是超文本标记语言hyper text mark-up language的首字母缩写,指的是一种通用web页面描述语言,是用来描述我们打开浏览器就能看到的 ...