第一种(推荐使用)

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相关推荐

  1. 【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )

    文章目录 一.创建支持 Kotlin 的 NDK 项目 二.Kotlin 语言中使用 NDK 要点 1.加载动态库 2.声明 ndk 方法 3.Project 下的 build.gradle 配置 4 ...

  2. [译]Object的局限性——Kotlin中的带参单例模式

    原文:Kotlin singletons with argument --object has its limits 作者:Christophe Beyls 译者:却把清梅嗅 在Kotlin中,单例模 ...

  3. Kotlin中的数据存储

    数据存储 1 持久化技术简介 数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或计算机关机的情况下,这些数据仍然不会丢失. 保存在内存中的数据是处于瞬时状态的,而保存在存储设备中 ...

  4. kotlin调用类中的方法_一种轻松的方法来测试Kotlin中令人沮丧的静态方法调用

    kotlin调用类中的方法 by Oleksii Fedorov 通过Oleksii Fedorov 一种轻松的方法来测试Kotlin中令人沮丧的静态方法调用 (A stress-free way t ...

  5. 教你如何完全解析Kotlin中的注解

    简述: 从这篇文章将继续开始探索Kotlin中的一些高级的内容,之前有着重探讨了Kotlin的泛型以及泛型型变等内容.现在我们一起来看下Kotlin中的注解.Kotlin中的注解是100%与Java注 ...

  6. Kotlin中变量不同于Java: var 对val(KAD 02)

    原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 作者:Antonio Leiva 时间:Nov 28, 201 ...

  7. 教你如何攻克Kotlin中泛型型变的难点(下篇)

    简述: 前几天我们一起为Kotlin中的泛型型变做了一个很好的铺垫,深入分析下类型和类,子类型和子类之间的关系.什么是子类型化关系以及型变存在的意义.那么今天将会讲点更刺激的东西,也就是Kotlin泛 ...

  8. [译]带你揭开Kotlin中属性代理和懒加载语法糖衣

    翻译说明: 原标题: How Kotlin's delegated properties and lazy-initialization work 原文地址: https://medium.com/t ...

  9. 教你如何完全解析Kotlin中的类型系统

    简述: 已经很久没有更新文章,这大概是2019年第二篇文章了,有很多小伙伴们都在公众号留言说是不是断更了.是不是跑路了.在这里统一回复下我还好,并没有跑路哈,只是在思考接下来文章主要方向在哪? 如何在 ...

最新文章

  1. Zenoss Announces Monitoring for VMWare's Cloud Director
  2. 不知所“云”:小企业对云托管知之甚少
  3. CLR Via C# 3rd 阅读摘要 -- Chapter 24 – Runtime Serialization
  4. 关于谷歌浏览器 点击元素便签出现外边框的情况解决办法
  5. 【最新】2020年4月学术会议变动汇总
  6. boost::log::to_log_manip用法的测试程序
  7. sqlserver存储过程循环写法
  8. 如何切换 SVN 用户名
  9. 指的是什么意思_扈三娘的外号一丈青,到底指的是什么意思?
  10. [kubernetes] 资源管理 ---- 资源请求和限制
  11. T-SQL编程基础之一:变量与基本语句
  12. 获取activemq 队列所有数据_ActiveMQ的应用
  13. c语言三元组稀疏矩阵的转置实验报告,稀疏矩阵快速转置 数据结构实验报告
  14. 使用Dockerfile构建自己的etcd镜像
  15. fastDFS 无法获取服务端连接资源:找不到可用的tracker
  16. 讯飞在线语音TTS队列策略
  17. PDF Expert for mac(pdf编辑工具)
  18. 四种常见背包问题整理
  19. android能播放4k视频格式,安卓APP,无广告支持多种格式的万能视频播放器
  20. hrbust 1558 小背包(简单01背包)水坑

热门文章

  1. MySQL 关于毫秒和微秒的处理,MySQL获取毫秒!
  2. IDEA Properties中文unicode转码问题
  3. Flask rst 文档转换为html格式文件
  4. WebView + jQuery
  5. Oracle 9i DBA Fundamentals I 学习笔记(三)
  6. 笔记本电脑字母键盘总是打出数字_笔记本电脑,这些情况都是键盘坏了,换了就能好...
  7. 那个计算机应用没有广告,为什么别人的电脑没有什么广告,而你的电脑一大堆呢?答案在这里...
  8. mysql排序空的放后面_mysql排序让空值NULL排在数字后边-Fun言
  9. Linux学习中我的10条建议和技巧
  10. 聊聊linux查看服务和端口状态命令netstat