文档章节

学习日志:以ArrayAdapter数据适配器底层源码讲解layoutInflater创建View

吴新超
 吴新超
发布于 2015/02/06 12:42
字数 843
阅读 20
收藏 0

今天的笔记我琢磨了下,最后还是决定不直接讲layoutInflater打气筒创建View,可能结合之前的笔记会更让人理解。
      昨天我们在这里记录了listview的用法,说到它是以mvc模式实现的后台数据的前台展示,其中我们提到了他的C层是一个Adapter数据适配器,具体用法和原理也在昨天都提到了,今天就来通过一个简单的常见数据适配器来了解下layoutInflater的用法和原理。
      ArrayAdapter:listview一个针对于数组的界面展示的数据适配器,昨天我们是自己新建了一个类继承了BaseAdapter,而它,本身已经继承了BaseAdapter。
     昨天我们是针对一个对象的集合去展示,而且从我上传的图片看,数据直接这样显示不美观,手机应用UI的设计很重要,今天公司的iOS工程师老马还在微信抱怨UI好难,layoutInflater就是布局数据页面的一种实现方式。
     跟我们写的MyAdapter一样,ArrayAdapter也重写getCount()和getView(...)方法,前一方法还是同样返回的是这个数组的长度,后方法中传进来的参数是一个position值(和昨天一样),一张新的XML布局文件,和这张布局文件中的一个TextView的ID,后两个参数的作用就是为了通过layoutInflater去创建一个View对象,在ArrayAdapter底层实getView(...)方法中,有这么一行代码:View view = myInflater.inflflate(...);这个Inflater(…)方法就是LayoutInflater通过填充一个XML文件中生成一个View对象的实现,然后再通过先前传进来的这个XML文件中的TextView的ID往里面setText已经得到了position位置的条目。 
     简而言之,layoutInflater的表面操作就是我们定义一张新的layout布局,在上面做漂亮的美工,然后原先的布局再通过listview展现数据时得到的每个position对应的数据都由这张新的布局去包装,所以我们也可以通过多张不同的布局去更换页面数据的展现风格。
   现在我们也可以回过头去自己用layoutInflater对我们昨天ListView展现的数据在getView(…)方法中进行包装,定义一张叫做list_item的页面,里面做一些布局来放置TextView控件,然后在昨天的getView方法中调用View.Inflater(context,resource,parent)将上下文,list_item的布局文件还有这个新布局要放置的窗体(一般为Null)传进来,然后通过上面layoutInflater创建的view对象去获取它的TextView对象,最后将已经得到的position位置对应的person对象的信息的名字,电话等放在对应的TextView中即可!
好了,今天的学习笔记就这些,由于白天和晚上都有点忙,所以整理的并不是很好,源代码还是在昨天的URL中,今天已经同步新的知识点更新!...(突然发现代码中电话号码和余额的位置倒过来了,明天再改吧,今天先睡了)


© 著作权归作者所有

吴新超
粉丝 2
博文 8
码字总数 13585
作品 0
海盐
程序员
私信 提问
Android学习--08-ListView

Android 最常用的控件就是向上下滑动的显示 定义一个实体类 用于存id 和 名称 定义一个适配器 继承ArrayAdapter 重写public View getView(int position, View convertView, ViewGroup paren...

ssnoodles
2016/09/22
7
0
Android中的ListView控件

ListView 绝对可以称得上是 Android 中最常用的控件之一, 当我们的程 序中有大量的数据需要展示的时候,就可以借助 ListView 来实现。ListView 允许用户通过手 指上下滑动的方式将屏幕外的数据...

西红柿的眼泪
2016/07/16
17
0
Android界面控件(4)—数组适配器的使用

为了保证用户界面显示的内容与底层数据一致,应用程序需要监视底层数据的变化,如果底层数据更改了,则用户界面也需要修改显示内容。在使用适配器绑定界面控件和底层数据之后,应用程序就不需...

iBazinga
2016/11/18
148
0
【android基础学习之四】——基础控件CheckBox,Spinner,AutoCompleteTextView,DatePicker,TimePicker

声明:学习的书籍《Android应用开发揭秘》,这里记录学习该书籍的日志,引用的相关代码与总结描述,没有商业的用途,完全是自我学习的一个记录,刚刚学习不可避免会出现很多问题,若是有错误...

晨曦之光
2012/03/08
2.1K
0
android--------listview之适配器

ListView之适配器的使用,包含了ArrayAdapter,SimpleAdapter ,BaseAdapter等适配器。 1:ArrayAdapter 预览效果: 2:SimpleAdapter 使用simpleAdapter的数据用一般都是HashMap构成的List,...

切切歆语
2016/11/23
12
0

没有更多内容

加载失败,请刷新页面

加载更多

log4j起不来: No appenders could be found for logger

在mvn test时,log4j一起起不来,log message打不出来 原因: log4j.properties 文件没不存在,或存在,但放错路径 解:把log4j.properties放入mvn 默认的resources跑路径下面:./src/main/...

Rebecca_Hu
30分钟前
5
0
ETH 开发工作记录

测试是否连接成功 String web3ClientVersion = web3j.web3ClientVersion().send().getWeb3ClientVersion(); log.info("version=" + web3ClientVersion);...

xiaodong16
32分钟前
3
0
ntpserver配置

# For more information about this file, see the man pages # ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5). driftfile /var/lib/ntp/drift # Permit ti......

Archer99
38分钟前
3
0
技术分享 | delete 语句引发大量 sql 被 kill 问题分析

作者:王航威 有赞 MySQL DBA,擅长分析和解决数据库的性能问题,利用自动化工具解决日常需求。 现象 某个数据库经常在某个时间点比如凌晨 2 点或者白天某些时间段发出如下报警 [Critical][p...

爱可生
43分钟前
5
0
Spring Boot 2.X(十六):应用监控之 Spring Boot Actuator 使用及配置

Actuator 简介 Actuator 是 Spring Boot 提供的对应用系统的自省和监控功能。通过 Actuator,可以使用数据化的指标去度量应用的运行情况,比如查看服务器的磁盘、内存、CPU等信息,系统的线程...

朝雾轻寒
47分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部