之前在键盘上耕耘的时候遇到了一些问题
这是一个动态布局中适配器里的的一段获取子项view的代码
val view = LayoutInflater.from(context).inflate(resourceId, root, false)
由于Kotlin作为现代语言,在语法上追求简洁,一般在编写过程中声明和调用的过程都被省了,所以对出初学Kotlin并且之前没有学过用Java来处理xml文件的童鞋,要想理解这句代码还是挺困难的。我第一次见到这句时就有许多疑问:
=========================================================
这些问题我们得放到一起作为一个整体来看然后逐步展开
首先我们需要知道LayoutInflater是个抽象类,在这个类中
from是一个static方法,目的是传入上下文(context)
inflate是一个public方法(布局填充器) , 其作用(也是这一整句的作用)是将layout的xml布局文件实例化为View类对象
OK到这里我们大致有了个宏观的概念 我们继续展开,一个个来
Context是用于获取应用程序环境全局信息的接口。它本身是一个抽象类,安卓系统提供了它的实现。应用程序可以使用它访问自己的资源和类,也可以进行应用程序级的操作权,例如加载活动、发送广播和接收意图,等等。
从中可以看出Context能够用到的地方非常广泛,应该是android应用开发中最常用的一个元素,值得深入地去研究一下。但在这里你只需要知道它使布局填充器与上下文关联,并且正确配置在当前程序运行的设备上。
2.inflate
三个参数: resourceId , root , false , 其中
resourceId:Int
root:ViewGroup
false:boolean
我们一个一个过
第一个参数resourceId是我们要填充的xml文件,在R文件中每个组件都会有一个对应的id,所以这里是Int类型(R文件不展开了)
第二个参数root是根布局,root还可以设为null。ViewGroup是View的一个容器(不是本次重点,不展开了)
第三个参数是个布尔代数,需要结合前两个参数一起看
若第三个参数为true,则root作为根布局;若为false,则填充出的view对象的根布局作为根布局。
这里有四种情况
第二参数:root 第三参数:true
第二参数:root 第三参数:false
第二参数:null 第三参数:true
第二参数:null 第三参数:false
都可以调试一下
=========================================================
记: 关于View,Context需要再深入学习理解
不知不觉已经凌晨4点了,查资料看代码真的 好累~~
看着窗外,我想起了John Keats 的BrightStar
BrightStar
Bright star, would I were steadfast as thou art—
Not in lone splendour hung aloft the night
And Watching, with eternal lids apart,
Like nature’s patient, sleepless Eremite,
The moving waters at their priestlike task
Of pure ablution round earth’s human shores,
Or gazing on the new soft-fallen mask
Of snow upon the mountains and the moors—
No-yet still steadfast, still unchangeable,
Pillow’d upon my fair love’s ripening breast,
To feel for ever its soft fall and swell,
Awake for ever in a sweet unrest,
Still, still to hear her tender-taken breath,
And so live ever—or else swoon to death.