像 butterknife 或者DataBinding 一样,总是可以帮助我们节约时间去findViewByID, 在Kotlin中,也可以这样,我们只需要在XML布局中,将控件ID命名,然后就可以直接掉用了,具体实现如下:
1 在项目的build.gradle中添加
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
//自动寻找ID
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
}
}
2 做完第一步后,并不能自动寻找控件ID,还需要在app 的build.gradle中添加如下代码
apply plugin: 'kotlin-android-extensions'//启用扩展支持直接使用ID
import kotlinx.android.synthetic.main.(xml.文件名).*
4 一下是我的xml文件部分代码,只需要注意控件ID即可.
mEtContent.addTextChangedListener(object :TextWatcher{
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
})
6 向步骤5这样,也需要我们也许只用到onTextChanged这一个方法,那么其他的方法需要都要实现,代码有变多了,可以试试以下写法:
mEtContent.textWatcher { onTextChanged { text, start, before, count -> mTvCount.text =""+ (count+start)+"/20" }}
代码是不是简洁了很多 ,具体配置如下:
repositories {
jcenter()
}
dependencies {
compile 'com.pawegio.kandroid:kandroid:0.8.3@aar'
}
总结:一 : 在1,2,3步骤中,缺一不可,必须全部添加,
二 : 在使用Kotlin的 过程中,我发现代码上边的简洁很多,并且减少了不少的代码.但是刚接触这个的时候,很多规则不熟悉,查找资料起来,也不像Java那样充足,