Adapter适配器与具体应用

一.Adapter介绍:

1.Adapter是什么:Adapter适配器是沟通数据与视图的桥梁,用于对要进行显示的数据进行处理, 并通过与视图对象的绑定从而将数据显示到视图对象中。

2.Adapter应用场合:需要借助Adapter加载数据的AdapterLayout如:

①ListView以列表形式显示数据。

②GridView 以网格形式显示数据。

③Spinner 以下拉列表的形式显示数据。

④ViewPager 以分页形式显示数据。

3.Adapter构成:

AdapterLayout对象:负责显示;

Adapter对象:构建Item;

Context对象:资源访问对象;

View对象:呈现Item数据;

Data对象:代表数据;

4.Adapter工作原理的理解:

对于将要显示在AdapterLayout中的数据Data,Adapter会将数据存放在每个Item中,Item由存放对应类型的View控件来承载,最后Adapter将每个View控件显示在AdapterLayout中,从而实现了数据的显示。通俗来讲:如果将Adapter的工作看成是包饺子,那么Data数据就相当于是饺子馅,对应Adapter中的每个Item对象,而承载Item对象的View控件相当于饺子皮,Adapter相当于包饺子的人,负责数据的包装,最后将数据呈现在AdapterLayout中,AdapterLayout相当于是盛放饺子的盘子。

5.适配器的种类:

①:ArrayAdapter:简单的Adapter,主要用于对文本信息进行操作;其数据源为List<Object>集合。

②:SimpleAdapter:可以存放图片,文本信息;数据源为:List<? extends Map<String,?>>集合;

③:SimpleCursorAdapter();需要访问数据库

④:BaseAdapter::抽象类;有部分抽象方法;是最基础的适配器,其他适配器均在它的基础上进行扩展;⑤:ListAdapter:接口,看成一个标准;以上adapter都实现了该接口;

二.ListView中的应用:

该应用主要功能有:ListView中元素的排序,ListView中元素的分块显示,ListView右侧导航,ListView的单击事件。

功能实现:

1.左侧元素的显示实现过程:

①:Item对象中含有联系人姓名,姓名拼音首字母,以及头像三部分组成,可以声明一个Contact(联系人)类,该类包含以上属性,那么该适配器的数据源为一个List<Contact>集合,需要自己构建一个适配器来实现。

②自定义适配器可以继承BaseAdapter类也可以继承BaseAdapter类的子类,本案例中继承了ArrayAdapter类,相比直接继承BaseAdapter要简便;

③排序:让手机联系人根据首字母升序排列,借助Collections.sort();方法重写compare方法,制定排序规则;

④分块显示:将具有相同首字母的联系人分在一块,只显示第一次出现该字母的TextView,其他TextView设置为隐藏。在已经排好序的基础上,首先要找到第一次出现该字母的位置,然后和每个Item位置进行比较,如果与第一次出现的位置相等,则设置该TextView显示,否则隐藏。

⑤:点击Item高亮显示:需要重写适配器的getView()方法,取到点击的位置和Item的位置比较,如果相等则改变背景颜色,否则为默认背景颜色;注意:如果在适配器优化中,使用了convertView对象,那么就要使用设置选择模式,否则可能导致点击一个Item有两个Item高亮显示,这是因为convertView对象实现了view的重用,减少了view对象的创建。

2.右侧导航栏的实现过程:

①该数据中只有英文字母,可以使用ArrayAdapter来实现,因为要改变字体颜色和设置样式,所有应自己写一个布局文件,来设置。

②得到数据源:可以使用循环往集合中添加所需要的元素。

③获得ListView对象并构建ArrayAdapter适配器:

④关联适配器。

⑤.设置OnItemClickListener监听,单击Item时,左边页面会将对应字母的联系人块置顶,同时该Item字体颜色变成红色,需要更新该适配器,在更新时会调用getView()方法;在getView()方法中写功能实现语句。

三.GridView中的应用:驾校系统中的如下效果:

项目实现过程:

①.相关属性:numColumns:设置有几列。horizontalSpacing:设置水平间距。verticalSpacing:设置垂直间距。

②.该视图中含有文本及图片信息,可以考虑使用SimpleAdapter适配器来实现。需要获得一个List<? Extends Map<String,?>>集合的数据源。

③.获得GridView对象,构建适配器并关联适配器。

注意:SompleAdapter适配器的构造方法中:public SimpleAdapter(Context context, List<? extends Map<String, ?>> data, @LayoutRes int resource, String[] from, @IdRes int[] to){}

参数:String[] from :为map集合中的key组成的数组;

参数:Int[] to::为存放map中key对应数据的View控件的id数组,要存放的数据要和控件id相对应。

四.Spinner中的应用:项目效果图及实现过程:

①.实现国家、城市、区县三级联动:

当Spinner1(国家)默认显示的为”国家”时,Spinner2(城市),Spinner3(区县)默认显示:“城市”和“区县”并且里面没有其他信息,而当Spinner1变动时,比较显示中国,此时Spinner2中的信息更新,添加了中国有关城市信息,而Spinner3中没有区县信息;当Spinner2中显示的不是“城市”时,Spinner3中的信息会更新以对应Spinner2中的城市信息。

②.首先获得数据源:定义三个数组,其中国家为一维数组,其他两个为二维数组,国家、城市、区县中的数据相对应。

③:获得Spinner对象,设置适配器,关联适配器,并给Spinner设置监听。

Spinner1监听:

Spinner2监听:

Spinner3监听:

五.ViewPager中的应用:项目效果图及实现过程:

①.使用PagerView适配器,实现该抽象类中的抽象方法:instantiateItem()方法:构建item对象,destroyItem()方法:销毁item对象;如果一共有四张图片需要加载,那么该开始会先创建两个Item,用户向右滑动一张图片后,会创建第三个Item,再向右滑动一张,第一 个Item销毁,第四个Item创建。总而言之要始终保持当前Item的左右(除了已经处在最左边或最右边的情况)都创建了一个Item,以便于用户在向左或向右滑动时即刻显示出来。

②获得ViewPager对象,关联适配器。

Adapter适配器与具体应用相关推荐

  1. android 之UI 高级控件Adapter(适配器详解)

    了解适配器组件: 适配器是一个连接数据源和AdapterView的桥梁,通过它能有效的实现数据源与AdapterView的分离设置,使AdaptereView与数据的绑定更加简便,修改更加方便. Ad ...

  2. Adapter适配器和base-adapter-helper库的使用

    文章目录 Adapter适配器 概述 关于视图重用 关于ViewHolder 使用步骤 base-adapter-helper库的使用 1.导入库 2.将库中的java文件复制到项目中 3.编译并解决 ...

  3. Android中使用Adapter(适配器)给RecycleView设置数据源

    场景 RecyclerView RecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足.其可以实现数据纵向滚动,也 ...

  4. adapter 适配器

    定义: 适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 示例: 比如,水货的手机充电器插头是欧美标准(大头插座),中国的插座是 ...

  5. android中Adapter适配器的讲解

    android中Adapter适配器的讲解 Adapter(适配器的讲解) 适配器就我自己来看,我觉得这是一个非常重要的知识点,Adapter是用来帮助填出数据的中间桥梁,简单点说吧:将各种数据以合适 ...

  6. Android适配器以及作用,Android Studio:自定义Adapter(适配器)的一些通俗易懂的理解(以一个简单的聊天界面为例)...

    本文是博主对Adapter(适配器)的一些理解,为了加深对Adapter的理解以及记录自己的阶段学习而写,同时也适合初学者阅读,参考本条博客的逻辑进行学习. 第一  先来看看实现这个程序需要需要创建哪 ...

  7. Android - Adapter 适配器

    Android 适配器 本文介绍两个Adapter: ArrayAdapter:最简单的Adapter,只能展现一行文字. XML文件: <ListViewandroid:id="@+ ...

  8. Android Adapter适配器

    Android Adapter适配器 Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View. Andr ...

  9. UI组件之AdapterView及其子类(一)三种Adapter适配器填充ListView

    AdapterView的内容一般是包含多项相同格式资源的列表,常用的有5种AdapterView的子类: (1)ListView:简单的列表 (2)Spinner:下拉列表,给用户提供选择 (3)Ga ...

最新文章

  1. 派工单系统 源码_「青鸟报修云」酒店设备报修管理系统
  2. Linux下的shell编程入门
  3. 在windows下 格式化SD卡或U盘最快捷、安全的方法!
  4. [译] Fiber内幕:深入概述React新的协调算法
  5. Gis 热点技术分析
  6. 【AT987】高橋君【组合数】【莫队】
  7. html播放七牛云视频,直传七牛云视频播放商业版【价值199元】
  8. centos 程序 mysql_Centos 源码安装 MySQL
  9. wireshark----教你如何抓包
  10. Doris之审计日志插件
  11. 《趣题学算法》—第1章1.2节简单的数学计算
  12. Ubuntu安装时,下载太慢怎么办
  13. 枚举类比较和工具方法
  14. 用java语言写一个实用小程序_用java语言,编写一个小程序。
  15. 弹窗插件zDialog使用教程
  16. html网页设计模板
  17. GitLab使用教程(详细)(转载)
  18. 利用scrapy爬取美图录网站图集按模特姓名存储到本地(三)
  19. android检测cup温度工具,Android如何实现获取手机CPU的温度?
  20. March 7th Wednesday (三月 七日 水曜日)

热门文章

  1. 头插法和尾插法建立单链表
  2. 【valist】c语言可变参数宏
  3. Apriori算法Matlab实现
  4. 今天两位80后程序员身价超千亿 一大波快手员工财富自由
  5. 类似火车头的采集器-免费任意数据采集器
  6. @Scheduled注解详解
  7. 强制删除正在运行的文件
  8. 服务器错误数字(代码)对照表
  9. 简单十步创建个人博客网站
  10. NLP中的特殊标记(Special Tokens)[PAD]、[CLS]、[SEP]、[UNK]