Kotlin开发Android笔记10:Kotlin中Kotlin Android Extensions
来源:互联网 发布:淘宝账号是什么 从哪看 编辑:程序博客网 时间:2024/05/29 04:51
Kotlin Android Extensions是另一个Kotlin团队研发的插件,让我们用更少的代码来开发程序 。 当前仅仅包括了view的绑定。该插件自动创建了很多的属性来让我们直接访问XML中的view。因此不需要你在布局中去找到这些views。 我们使用的View,其名字就是来自对应view的id,所以我们取id的时候要十分小心,这将会是我们类中非常重要的一部分。 这些控件的类型也是来自XML中的,所以我们不需要去进行额外的类型转换。Kotlin Android Extensions使用不需要依赖其它额外的库。它仅仅由插件组层,用于生成工作所需的代码,只需依赖于Kotlin的标准库。 Kotlin Android Extensions工作原理是: 该插件会代替任何属性调用函数,比如获取到view并具有缓存功能,以免每次属性被调用都会去重新获取这个view。 这个缓存装置只会在Activity或者Fragment中才有效。如果它是在一个扩展函数中增加的,
–使用Kotlin Android Extensions——–
很简单,只要在我们AndroidStudio项目中build.gradle中增加了这个依赖:
buldscript{ repositories { jcenter() } dependencies { classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"//目前AndroidStudio中kotlin_version最新版本是1.0.3 }}
添加好依赖包后,唯一需要这个插件做的事情是在对应的类中手动增加一个特定import来使用这个功能。我们有两个方法来使用它:
Activities或者Fragments的Android Extensions
最典型的使用方式。它们可以作为activity或fragment的属性是可以被访问的。属性的名字就是XML中对应view的id。
需要使用的import语句以kotlin.android.synthetic开头,然后加上我们要绑定到Activity的布局XML的名字:
//如绑定布局xml是activity_main.xmlimport kotlinx.android.synthetic.activity_main.*
这样我们就可以在setContentView被调用后访问这些view。
很重要的一点是,针对这些布局,我们也需要增加手工的import:
import kotlinx.android.synthetic.activity_main.*import kotlinx.android.synthetic.content_main.*
2.Views的Android Extensions
Activities或者Fragments的Android Extensions使用还是有局限性的,因为可能有很多代码需要访问XML中的view。
比如,自定义view或者adapter。比如绑定一个xml中的view到另一个view。唯一不同的就是需要import:
import kotlinx.android.synthetic.view_item.view.*
如果我们需要一个adapter,比如,我们现在要从inflater的View中访问属性:
view.textView.text = "Hello"
—简单举例——-
我们修改http://blog.csdn.net/true100/article/details/52034460
中的代码:
首先,我们布局代码不变,但是RecyclerView的id变了:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" /></FrameLayout>
然后修改MainActivity中代码:
package com.ldm.kotlinimport android.os.Bundleimport android.support.v7.app.AppCompatActivityimport android.support.v7.widget.LinearLayoutManagerimport android.support.v7.widget.RecyclerViewimport kotlinx.android.synthetic.activity_main.*//手工添加这条导入语句class MainActivity : Activity() { //定义一个集合变量,并赋值 private val items = listOf("Kotlin DEMO数据1", "Kotlin DEMO数据21/8", "Kotlin DEMO数据17", "Kotlin DEMO数据111", "Kotlin DEMO数据1", "Kotlin DEMO数据1", "Kotlin DEMO数据17") //实现onCreate()方法,关键字“fun” override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //接下来就直接使用recyclerview(布局中id就是recyclerview) recyclerview.layoutManager = LinearLayoutManager(this); //初始化Adapter并设置数据 recycle_view.adapter = FirstKotlinAdapter(items); }}
因为此类本身只有一个RecycleView,所以感觉不到代码优势。不过我们在Adapter中也可以这样省哦。
//手工导入RecycleView对应的布局文件item_lvimport kotlinx.android.synthetic.item_lv.view.*//可以使用包含在itemView中的属性,在任何view中使用这些属性class ViewHolder(view: View, val itemClick: (Forecast) -> Unit) : RecyclerView.ViewHolder(view) { fun bindForecast(forecast: Forecast) { with(forecast){ Picasso.with(itemView.ctx).load(iconUrl).into(itemView.icon) itemView.date.text = date itemView.description.text = description itemView.onClick { itemClick(forecast) } } }}
博客学习来自《《Kotlin for Android Developers》中文翻译》。
相关代码可以查看:https://github.com/antoniolg/Kotlin-for-Android-Developers
学习交流:https://github.com/ldm520/Android_Kotlin_Demo
- Kotlin开发Android笔记10:Kotlin中Kotlin Android Extensions
- < Kotlin > Kotlin Android Extensions (译文)
- Use Kotlin Android Extensions
- kotlin学习笔记——Kotlin Android Extensions
- kotlin初窥之Kotlin Android Extensions
- Kotlin学习之kotlin-android-extensions
- Kotlin开发Android笔记3:Kotlin中类与函数
- Kotlin开发Android笔记3:Kotlin中类与函数
- Kotlin开发Android笔记4:Kotlin中变量及属性
- Kotlin开发Android笔记11:Kotlin中属性委托
- Kotlin Android Extensions工具使用
- Android笔记 kotlin笔记
- Kotlin开发Android笔记1:Kotlin介绍及项目配置
- Kotlin开发Android笔记2:Kotlin与Java简单比较
- Kotlin 开发Android 笔记1:Kotlin介绍及项目配置
- Kotlin开发Android笔记2:Kotlin与Java简单比较
- Kotlin开发Android笔记9:Kotlin操作符重载
- Kotlin编程之Kotlin Android Extensions(扩展插件)
- [Learn Android Studio 汉化教程]Refactoring Code
- 求二叉树的深度
- 移动联通基站定位
- CSS3自定义Checkbox复选框
- [Codevs5339][hzwerNOIP模拟赛]小奇挖矿
- Kotlin开发Android笔记10:Kotlin中Kotlin Android Extensions
- Checking operating system version: must be 4.0, 5.0, 5.1 or 5.2. Actual 6.1
- Android——了解Fragment懒加载、Material Design、picasso的应用。
- oracle创建主键自增长
- Android反编译与回编译
- poj 2503 Babelfish
- 湖南省第六届省赛 Biggest Number (搜索)
- LeetCode—382. Linked List Random Node
- mysql导出数据库结构并清空数据库