Kotlin Android Extensions是另外一个团队开发的,它是一个插件所以不需要依赖别的库。当前仅仅包含view的绑定,会自动创建很多属性让我们直接访问xml中的view,我们就不需要明确的去布局中找这些view了。

自动创建的属性的名字来源于view的id,所以我们取id的时候要十分小心。这些属性类型也是从xml中获取的,所以不必再做类型转换。

Kotlin Android Extensions具有缓存功能,避免每次使用属性都重新获取一次。但是缓存功能目前只在activity和fragment中有效,如果在扩展函数中则跳过缓存。

使用Kotlin Android Extensions

一、首先加入插件的依赖,在module中的build.gradle中(注意不是root下的):

buildscript {repositories {jcenter()}dependencies {classpath 'org.jetbrains.kotlin:kotlin-android-extensions:1.1.2-4'}
}

二、import进代码中:

1、activity和fragment的Android Extensions

import kotlinx.android.synthetic.activity_main.*

以kotlinx.android.synthetic开头,activity_main是layout的名字(注意:新版本前面要加上main,既.main.activity_main.)。

当调用了setContentView之后就可以直接使用自动创建的view的属性了。注意:如果在layout中使用include,那么必须将include的layout也import进来。

2、view的Android Extensions

有很多代码需要访问xml中的view,比如自定义view或者adapter。绑定一个view到另外一个view,这时需要import

如:

import kotlinx.android.synthetic.main.item_view.view.*class RecyclerAdaper(var items: List<String>, var listener: (String) -> Unit) : RecyclerView.Adapter<RecyclerAdaper.ViewHolder>(){override fun onBindViewHolder(holder: ViewHolder, position: Int) {holder.bind(items[position])}override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {return ViewHolder(View.inflate(parent.context, R.layout.item_view, null))}override fun getItemCount(): Int {return items.size}class ViewHolder(view: View) : RecyclerView.ViewHolder(view){fun bind(str: String){itemView.nametext.text = str}}}

注意import进来的不是layout了,而是layout.view,这样就可以直接使用这个view的子view了。

三、直接在代码中使用

如:

activity_main.layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.v7.widget.RecyclerViewandroid:id="@+id/recyclerview"android:layout_width="match_parent"android:layout_height="match_parent"></android.support.v7.widget.RecyclerView></RelativeLayout>

MainActivity.java

import kotlinx.android.synthetic.main.activity_main.*class MainActivity : Activity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)//var recyclerview = findViewById(R.id.recyclerview) as RecyclerView//var recyclerview: RecyclerView = find(R.id.recyclerview)recyclerview.layoutManager = LinearLayoutManager(this)

可以看到直接使用recyclerview这个变量,不必在使用find代码,节省了大量的代码

kotlin学习笔记——Kotlin Android Extensions相关推荐

  1. Kotlin学习笔记--Kotlin之集合

    Kotlin学习笔记--Kotlin之集合 集合类 1. List 集合 1.1 不可变list 1.2 可变list MutableList 1.3 集合遍历 1.4 List的操作函数 1.5 l ...

  2. Kotlin学习笔记(1)- 环境配置

    系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...

  3. Kotlin学习笔记12——数据类和密封类

    Kotlin学习笔记12--数据类和密封类 前言 数据类 在类体中声明的属性 复制 componentN 解构声明 密封类 尾巴 前言 上一篇,我们学习了Kotlin中的拓展,今天继续来学习Kotli ...

  4. Kotlin 学习笔记(四)—— 协程的基础知识,面试官的最爱了~

    又是一个月没见了,坚持永远是世上最难的事情,但,往往难事才会有更大的收获.与君共勉~ 前段时间一直在学习 Compose,所以导致 Kotlin 笔记系列搁置了好久.一方面是因为 Compose 的学 ...

  5. Kotlin 学习笔记(十四)浅读协程

    上一篇-Kotlin 学习笔记(十三)高阶函数 为什么需要协程   举例一个异步编程中最常见的场景:后台线程执行一个A任务,下一个B任务依赖于A任务的执行结果,所以必须等待上一个任务执行完成后才能开始 ...

  6. 阿里VLayout学习笔记(Kotlin)

    阿里VLayout学习笔记(Kotlin) 文章目录 阿里VLayout学习笔记(Kotlin) VLayout中LayoutHelper分类(辅助Adapter实现RecyclerView的Item ...

  7. Kotlin 学习笔记(八)—— Kotlin类与对象之接口

    Kotlin 学习笔记(八)-- Kotlin类与对象之接口 Kotlin学习笔记系列教程 Kotlin 学习笔记(一)-- 概述.学习曲线.开发工具.参考资料 Kotlin 学习笔记(二)-- 基础 ...

  8. Kotlin学习笔记(3)- 语法

    系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...

  9. Kotlin学习笔记(2)- 空安全

    系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...

最新文章

  1. 彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战
  2. Bootstrap—基础样式定义
  3. lamp安装zabbix(全源码安装)
  4. C# .NET 根据Url链接保存Image图片到本地磁盘
  5. JAVA IO修改文本内容
  6. SDUT - Mountain Subsequences(dp)
  7. Nexus-配置vPC 实验三
  8. 在Ubuntu Server上使用vtk处理体数据,直接得到渲染结果图片避免显示窗口
  9. 进击的UI-------------------RAC
  10. 国防科大计算机研究生院,国防科大计算机学院在读硕士的程序人生!
  11. [LibTorch] 指定参数不进行学习
  12. NAS与SAN架构:如何比较这两个存储系统
  13. “新闻”频道“最新更新”有问题吗?
  14. 自定义验证之整数(包括0和负数)
  15. 其实,我是靠怼产品上位的。。。
  16. atitit. 解决org.hibernate.SessionException Session is closed
  17. Hbase API实现倒序查询
  18. Hi3519AV100 sdk 介绍
  19. SAP Fiori 的附件处理(Attachment handling)
  20. python3爬取网易云歌曲的相关信息

热门文章

  1. Response.ContentType 详细列表
  2. Android ListView侧滑item,仿QQ删除效果
  3. 技术人员转型是件痛苦的事情~
  4. man da'te
  5. 六、Scrapy中Download Middleware的用法
  6. eclipse导入远程库的git项目
  7. CSS自学笔记(16):CSS3 用户界面
  8. 雅虎将于4月底关闭自助式广告测试
  9. ZOJ-1610-Count the Colors
  10. 前端真的能做到彻底权限控制吗?