对layoutInflater的理解

参考该博客:http://www.cnblogs.com/top5/archive/2012/05/04/2482328.html 

LayoutInflater是一个抽象类,通过调用其实例方法inflate(),将res/layout下的xml布局文件进行实例化,不同于findvirebyid()是找布局文件下的控件进行实例。

 

1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;

2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。
LayoutInflater是一个抽象类,通过三种方法可以获得其对象。
1. LayoutInflater inflater = getLayoutInflater();//调用Activity的getLayoutInflater() 
2. LayoutInflater inflater = LayoutInflater.from(context);  
3. LayoutInflater inflater =  (LayoutInflater)context.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);

三种方法的本质是相同的,都是调用的Context.getSystemService()。

另外getSystemService()是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。

inflate()方法:

通过 sdk 的 api 文档,可以知道该方法有以下几种过载形式,返回值均是 View 对象,如下:

public View inflate (int resource, ViewGroup root) 
public View inflate (XmlPullParser parser, ViewGroup root)
public View inflate (XmlPullParser parser, ViewGroup root, boolean attachToRoot)  
public View inflate (int resource, ViewGroup root, boolean attachToRoot)
示意代码:
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);       
View view = inflater.inflate(R.layout.custom, (ViewGroup)findViewById(R.id.test));       
//EditText editText = (EditText)findViewById(R.id.content);// error 
EditText editText = (EditText)view.findViewById(R.id.content);
对于上面代码,指定了第二个参数 ViewGroup root,当然你也可以设置为 null 值。
注意:
·inflate 方法与 findViewById 方法不同;
·inflater 是用来找 res/layout 下的 xml 布局文件,并且实例化;
·findViewById() 是找具体 xml 布局文件中的具体 widget 控件(如:Button、TextView 等)。

转载于:https://www.cnblogs.com/fajieyefu/p/5546786.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux /root /etc,Linux知识:/root/.bashrc与/etc/profile的异同

要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell。交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是…

java多线程售票例子

代码如下: public class Ticket1 implements Runnable {private int tickets 100;Overridepublic void run() {while (tickets > 0) {synchronized (Ticket.class) {if (tickets > 0) {tickets--;System.out.println(Thread.currentThread().getName() "正在卖票&…

推荐一款免费国产远程办公神器ToDesk,TeamViewer完美替代品

对于从事IT行业的人员来说,远程软件基本上是必备的软件。之前使用用TeamViewer远程办公软件,它的稳定性、延迟低、功能齐全很受广大开发者的欢迎。唯一美中不足的是它是一款商业软件。费用比较高。到现在基本上所有破解工具都无效了。所以不得不放弃这款…

[iOS] photoKit获取所有照片

代码: - (NSMutableArray *)getAllPhoto{NSMutableArray *arr [NSMutableArray array];// 所有智能相册PHFetchResult *smartAlbums [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular optio…

用python写linux中的ls,Python实现Linux环境下的ls命令

在Linux下使用ls命令结合正则表达式,能够高效地进行文件搜索,并通过参数操作文件,于是就想用Python实现这个功能以便在Windows上使用import osimport reimport syspath os.getcwd()substr raw_input(The sub-string of the file (Support f…

苹果台式电脑怎么开机_龙华苹果电脑回收公司,台式电脑回收公司电话

龙华苹果电脑回收公司,台式电脑回收公司电话oDYIHx 通常液晶显示器有VGA和DVI两种种接口,其中VGA接口在长时间显示后悔出现画面模糊情况,需要校正才能恢复,然而DVi接口传输就比较稳定,它属于全数字无损传输信号,在长…

AtomicInteger使用非阻塞算法,实现并发控制多线程实现售票

代码如下: public class TicketDemo implements Runnable {private static volatile AtomicInteger ticketSum new AtomicInteger(20);private static int finalTotal 0;Overridepublic void run() {int count;while ((count ticketSum.decrementAndGet()) > 0) {System.…

数据库:SQLServer 实现行转列、列转行用法笔记

在许多的互联网项目当中,报表开发是整个项目当中很重要的一个功能模块。其中会有一些比较复杂的报表统计需要行转列或者列转行的需求。今天给大家简单介绍一下在SQLServer当中如何使用PIVOT、UNPIVOT内置函数实现数据报表的行转列、列转行。有需要的朋友可以一起学习…

硬件知识:串口通讯的起始、数据、停止位是怎么分配的?

串口是串行接口(serial port)的简称,也称为串行通信接口或COM接口。串口通信是指采用串行通信协议(serial communication)在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式。串口按电气标准及协议来划分…

ES5 getter setter

最近在学习vuejs,了解到内部实现使用到了es5的Getters和Setters。之前看高程的时候,没有重视这块,今天查看一下文档,了解了他们的作用,再次记录一下,可供以后查看和共享。 定义Getters和Setters&#xff1a…

python 调用bat失败_要想顺利通过Python面试,你最起码需要达到白银段位!

近几年 Python 非常热门,在学术界和产业界的使用率显著提高。目前学习Python的人数日益增多,Python在近3年的编程语言受欢迎度中一直处于榜首。今天我们就来讲讲在产业界,需要具备哪些能力才能获得一个满意的 Python 相关岗位 Offer。Python基…

多线程售票demo,用ReentrantLock实现

代码: public class TicketReentLockDemo implements Runnable {private int ticketTotal 100;private Lock lock new ReentrantLock();Overridepublic void run() {while (ticketTotal > 0) {try {lock.lock();if (ticketTotal > 0) {try {TimeUnit.MILLISECONDS.sle…

在linux安装不了apache,Apache 不能安装在linux?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼官网下载了tar.gz的文件, 然后tar解压, 可是走到 ./configureprefix/usr/local/apache/ 的时候就开始出现一些“NO”我怕这样make会有问题, 请问大家碰到出现"no"的选项嘛?…

andriod sqlite 详解转载

SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储、管理、维护等各方面都相当出色,功能也非常的强大。SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而…

数据库:SQLServer中in和 exists函数用法笔记

今天给大家分享一下SQLServer中in和 exists 用法,希望能对大家有所帮助。一、IN 用法确定指定的值是否与子查询或列表中的数据相匹配。1.1 语法格式test_expression [ NOT ] IN ( subquery | expression [ ,...n ] )1.2 参数说明test_expression为任意有…

什么是m叉树_不懂数据库索引的底层原理?那是因为你心里没点b树

前几天下班回到家后正在处理一个白天没解决的bug,厕所突然传来对象的声音: 对象:xx,你有《时间简史》吗? 我:我去!妹子,你这啥癖好啊,我有时间也不会去捡屎啊&#xff01…

可重入锁是什么和demo

可重入锁 reentrantlock是独占锁且可重入的 synchronized 也可以重入 可重入意思就是这个线程已经获取锁了,你再获取该锁还能获取 获取的还是原来的锁 不会出现问题 可以降低编程难度 代码如下: new Thread(new Runnable() {Overridepublic void run() {synchr…

linux 安装python 3.x,Linux 安装python3.x步骤

本文转发自博客园非真的文章,内容略有改动linux系统本身默认安装有2.x版本的python,版本x根据不同版本系统有所不同,通过python --V 或 python --version 查看系统自带的python版本。有一些系统命令时需要用到python2,不能卸载&am…

数据库:SQLServer中游标的用法笔记

一、游标的概念知识游标可以理解为SQL Server的一种数据访问机制,它允许用户访问数据的维度是数据行。用户可以对每一行数据进行单独处理,从而降低系统开销和潜在的阻隔情况,游标主要用于存储过程,触发器和 T_SQL复杂的脚本中&…

BZOJ_1009_[HNOI2008]_GT考试_(动态规划+kmp+矩阵乘法优化+快速幂)

描述 http://www.lydsy.com/JudgeOnline/problem.php?id1009 字符串全部由0~9组成,给出一个串s,求一个长度为n的串,不包含s的种类有多少. 分析 第一眼以为是组合.然后更滑稽的是用错误的方法手算样例居然算出来是对的...我数学是有多差... 题解也是看了好半天,有点难理解. 感觉…