Kotlin中使用简洁明了的代码替换findViewByid
第一种(推荐使用)
Kotlin Android 扩展插件(Android Studio 内置)
首先添加
apply plugin: 'kotlin-android-extensions'
官方示例
// Using R.layout.activity_main from the 'main' source set import kotlinx.android.synthetic.main.activity_main.*class MyActivity : Activity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)// 替代 findViewById<TextView>(R.id.textView)textView.setText("Hello, world!")} }
第二种
ButterKnife
在 Kotlin 中使用 ButterKnife
与 Java 中完全一致。 在 Gradle 构建脚本的修改如下,后面将重点介绍代码部分的差异。
在 Gradle 依赖中添加 kotlin-kapt
插件,并使用 kapt
替代 annotationProcessor
。
apply plugin: 'kotlin-kapt'dependencies {...compile "com.jakewharton:butterknife:$butterknife-version" kapt "com.jakewharton:butterknife-compiler:$butterknife-version" }
我们已经将整个 ButterKnife 示例代码转换为 Kotlin, 参见详细代码。
让我门看看发生了什么变化。 在 Java 中使用注解对将变量与之对应的 view 进行绑定:
@BindView(R2.id.title) TextView title;
在 Kotlin 中使用属性而不是直接使用变量。 对属性使用注解:
@BindView(R2.id.title)
lateinit var title: TextView
@BindView
被定义为仅应用于变量字段,而将注解应用于整个属性时,Kotlin 编译器能够理解并且覆盖相应注解的字段。
lateinit 修饰符允许声明非空类型,并在对象创建后(构造函数调用后)初始化。 不使用 lateinit
则需要声明可空类型并且有额外的空安全检测操作。
使用 ButterKnife 注解可以将方法设置为监听器:
@OnClick(R2.id.hello)
internal fun sayHello() { Toast.makeText(this, "Hello, views!", LENGTH_SHORT).show() }
注意在onCreate方法里,添加
ButterKnife.bind(this@MainActivity)
转载于:https://www.cnblogs.com/tongtong91/p/8441236.html
Kotlin中使用简洁明了的代码替换findViewByid相关推荐
- 【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )
文章目录 一.创建支持 Kotlin 的 NDK 项目 二.Kotlin 语言中使用 NDK 要点 1.加载动态库 2.声明 ndk 方法 3.Project 下的 build.gradle 配置 4 ...
- [译]Object的局限性——Kotlin中的带参单例模式
原文:Kotlin singletons with argument --object has its limits 作者:Christophe Beyls 译者:却把清梅嗅 在Kotlin中,单例模 ...
- Kotlin中的数据存储
数据存储 1 持久化技术简介 数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或计算机关机的情况下,这些数据仍然不会丢失. 保存在内存中的数据是处于瞬时状态的,而保存在存储设备中 ...
- kotlin调用类中的方法_一种轻松的方法来测试Kotlin中令人沮丧的静态方法调用
kotlin调用类中的方法 by Oleksii Fedorov 通过Oleksii Fedorov 一种轻松的方法来测试Kotlin中令人沮丧的静态方法调用 (A stress-free way t ...
- 教你如何完全解析Kotlin中的注解
简述: 从这篇文章将继续开始探索Kotlin中的一些高级的内容,之前有着重探讨了Kotlin的泛型以及泛型型变等内容.现在我们一起来看下Kotlin中的注解.Kotlin中的注解是100%与Java注 ...
- Kotlin中变量不同于Java: var 对val(KAD 02)
原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 作者:Antonio Leiva 时间:Nov 28, 201 ...
- 教你如何攻克Kotlin中泛型型变的难点(下篇)
简述: 前几天我们一起为Kotlin中的泛型型变做了一个很好的铺垫,深入分析下类型和类,子类型和子类之间的关系.什么是子类型化关系以及型变存在的意义.那么今天将会讲点更刺激的东西,也就是Kotlin泛 ...
- [译]带你揭开Kotlin中属性代理和懒加载语法糖衣
翻译说明: 原标题: How Kotlin's delegated properties and lazy-initialization work 原文地址: https://medium.com/t ...
- 教你如何完全解析Kotlin中的类型系统
简述: 已经很久没有更新文章,这大概是2019年第二篇文章了,有很多小伙伴们都在公众号留言说是不是断更了.是不是跑路了.在这里统一回复下我还好,并没有跑路哈,只是在思考接下来文章主要方向在哪? 如何在 ...
最新文章
- Zenoss Announces Monitoring for VMWare's Cloud Director
- 不知所“云”:小企业对云托管知之甚少
- CLR Via C# 3rd 阅读摘要 -- Chapter 24 – Runtime Serialization
- 关于谷歌浏览器 点击元素便签出现外边框的情况解决办法
- 【最新】2020年4月学术会议变动汇总
- boost::log::to_log_manip用法的测试程序
- sqlserver存储过程循环写法
- 如何切换 SVN 用户名
- 指的是什么意思_扈三娘的外号一丈青,到底指的是什么意思?
- [kubernetes] 资源管理 ---- 资源请求和限制
- T-SQL编程基础之一:变量与基本语句
- 获取activemq 队列所有数据_ActiveMQ的应用
- c语言三元组稀疏矩阵的转置实验报告,稀疏矩阵快速转置 数据结构实验报告
- 使用Dockerfile构建自己的etcd镜像
- fastDFS 无法获取服务端连接资源:找不到可用的tracker
- 讯飞在线语音TTS队列策略
- PDF Expert for mac(pdf编辑工具)
- 四种常见背包问题整理
- android能播放4k视频格式,安卓APP,无广告支持多种格式的万能视频播放器
- hrbust 1558 小背包(简单01背包)水坑
热门文章
- MySQL 关于毫秒和微秒的处理,MySQL获取毫秒!
- IDEA Properties中文unicode转码问题
- Flask rst 文档转换为html格式文件
- WebView + jQuery
- Oracle 9i DBA Fundamentals I 学习笔记(三)
- 笔记本电脑字母键盘总是打出数字_笔记本电脑,这些情况都是键盘坏了,换了就能好...
- 那个计算机应用没有广告,为什么别人的电脑没有什么广告,而你的电脑一大堆呢?答案在这里...
- mysql排序空的放后面_mysql排序让空值NULL排在数字后边-Fun言
- Linux学习中我的10条建议和技巧
- 聊聊linux查看服务和端口状态命令netstat