kotlin学习笔记——Kotlin Android Extensions
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相关推荐
- Kotlin学习笔记--Kotlin之集合
Kotlin学习笔记--Kotlin之集合 集合类 1. List 集合 1.1 不可变list 1.2 可变list MutableList 1.3 集合遍历 1.4 List的操作函数 1.5 l ...
- Kotlin学习笔记(1)- 环境配置
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...
- Kotlin学习笔记12——数据类和密封类
Kotlin学习笔记12--数据类和密封类 前言 数据类 在类体中声明的属性 复制 componentN 解构声明 密封类 尾巴 前言 上一篇,我们学习了Kotlin中的拓展,今天继续来学习Kotli ...
- Kotlin 学习笔记(四)—— 协程的基础知识,面试官的最爱了~
又是一个月没见了,坚持永远是世上最难的事情,但,往往难事才会有更大的收获.与君共勉~ 前段时间一直在学习 Compose,所以导致 Kotlin 笔记系列搁置了好久.一方面是因为 Compose 的学 ...
- Kotlin 学习笔记(十四)浅读协程
上一篇-Kotlin 学习笔记(十三)高阶函数 为什么需要协程 举例一个异步编程中最常见的场景:后台线程执行一个A任务,下一个B任务依赖于A任务的执行结果,所以必须等待上一个任务执行完成后才能开始 ...
- 阿里VLayout学习笔记(Kotlin)
阿里VLayout学习笔记(Kotlin) 文章目录 阿里VLayout学习笔记(Kotlin) VLayout中LayoutHelper分类(辅助Adapter实现RecyclerView的Item ...
- Kotlin 学习笔记(八)—— Kotlin类与对象之接口
Kotlin 学习笔记(八)-- Kotlin类与对象之接口 Kotlin学习笔记系列教程 Kotlin 学习笔记(一)-- 概述.学习曲线.开发工具.参考资料 Kotlin 学习笔记(二)-- 基础 ...
- Kotlin学习笔记(3)- 语法
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...
- Kotlin学习笔记(2)- 空安全
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...
最新文章
- 彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战
- Bootstrap—基础样式定义
- lamp安装zabbix(全源码安装)
- C# .NET 根据Url链接保存Image图片到本地磁盘
- JAVA IO修改文本内容
- SDUT - Mountain Subsequences(dp)
- Nexus-配置vPC 实验三
- 在Ubuntu Server上使用vtk处理体数据,直接得到渲染结果图片避免显示窗口
- 进击的UI-------------------RAC
- 国防科大计算机研究生院,国防科大计算机学院在读硕士的程序人生!
- [LibTorch] 指定参数不进行学习
- NAS与SAN架构:如何比较这两个存储系统
- “新闻”频道“最新更新”有问题吗?
- 自定义验证之整数(包括0和负数)
- 其实,我是靠怼产品上位的。。。
- atitit. 解决org.hibernate.SessionException Session is closed
- Hbase API实现倒序查询
- Hi3519AV100 sdk 介绍
- SAP Fiori 的附件处理(Attachment handling)
- python3爬取网易云歌曲的相关信息