博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kotlin的android扩展:对findViewById说再见(KAD 04)
阅读量:4646 次
发布时间:2019-06-09

本文共 1655 字,大约阅读时间需要 5 分钟。

作者:

时间:Dec 12, 2016

原文链接:http://antonioleiva.com/kotlin-android-extensions/

 

 

你也许已厌倦日复一日使用findViewById编写Android视图。或是你可能放弃它转而使用著名的Butterknife库。那么你将会喜爱Kotlin的Android扩展。

 

Kotlin的Android扩展

Kotlin的Android扩展是Kotlin插件的正规插件之一,它无缝覆盖Activities的视图,Fragments y视图。

 

让我们看看它是怎样简单。

 

在我们代码中集成Kotlin的Android扩展

虽然你要使用一插件时可以将其集成到代码中,但是你还是需要在Android模块中填加额外的apply:

1 apply plugin: 'com.android.application'2 apply plugin: 'kotlin-android'3 apply plugin: 'kotlin-android-extensions'

这些都是你需要添加的。这样你就准备好使用它。

在Activity或Fragment中覆盖视图

此时,在你的Activity或Fragment中覆盖视图与直接在XML中用视图id定义一样方便。

 

想象你有这样的XML:

1 
2
6 7
13 14

如你所见,TestView有welcomeMessage id。

 

只需在你的MainActivity这样编写:

1 override fun onCreate(savedInstanceState: Bundle?) {2     super.onCreate(savedInstanceState)3     setContentView(R.layout.activity_main)4  5     welcomeMessage.text = "Hello Kotlin!"6 }

 

为了能够使用它,你需要专门import(这句我写在下面),而且IDE能够自动添加引入(import)它。这不是很容易吗!

import kotlinx.android.synthetic.main.activity_main.*

 

插件生成代码能够存储视图缓存(cache),这样你再次访问视图时,就不需要另一个findViewById。

 

由一个视图覆盖其它视图

我们有这样的视图:

1 
5 6
10 11
15 16

如你在其内添加adapter。

 

你只需用这个插件,就可直接访问子视图:

1 val itemView = ...2 itemView.itemImage.setImageResource(R.mipmap.ic_launcher)3 itemView.itemTitle.text = "My Text"

 

尽管插件也帮助你填写了import,不过这类有一点点不同:

import kotlinx.android.synthetic.main.view_item.view.*

 

对此有一些事情你需要知道:

  1. 在编译时,你可以从任何其他视图引用任何视图。这意味着你可以从一视图引用任何视图,而非一定是其的子视图。但是,在运行时这将失败,这是因为其试图覆盖的视图不存在。
  2. 在这种情况下,视图没有为ActivitiesFragments缓存起来。

 

 

但是,你只要仔细利用它,它还是非常有用的工具。

 

结论

 

你已经知道怎样在Kotlin中方便的处理Android视图。用一个简单的插件,我们就可以在扩展后忽略所有那些涉及视图恢复的糟糕代码。这插件将按照我们的要求特性产生没有任何问题的正确的类型。

 

转载于:https://www.cnblogs.com/figozhg/p/6185155.html

你可能感兴趣的文章
[Office]PPT 2013如何设置图片为半透明?
查看>>
个人技术博客
查看>>
Windows 2003 Server安全配置完整篇
查看>>
inform表单验证,正则表达式,用户名,身份证,密码,验证码
查看>>
CSS圆角
查看>>
安装 Apache Commons Logging API步骤
查看>>
返回顶部
查看>>
Log4cplus <1> 编译
查看>>
TaskTracker发送Heartbeat以及接受HeartbeatResponse
查看>>
Java集合类--温习笔记
查看>>
Struts2中的bean标签
查看>>
JVM 性能调优实战之:使用阿里开源工具 TProfiler 在海量业务代码中精确定位性能代码...
查看>>
mysql函数之六:mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey
查看>>
json-lib 使用教程
查看>>
关于四则运算作业的初步实现
查看>>
Hibernate(六)一对多映射(多对一)
查看>>
进程池-限制同一时间在CPU上运行的进程数
查看>>
HDU - 3001 Travelling
查看>>
kafka笔记-Kafka在zookeeper中的存储结构【转】
查看>>
【bzoj2402】陶陶的难题II 分数规划+树链剖分+线段树+STL-vector+凸包+二分
查看>>