前言
我希望我的文章不要弯弯绕绕,直接贴代码希望大家可以看得懂,看完文章可以达到学习的第一个里程碑,至于后面原理慢慢的补上就是了,毕竟业务和解决问题优先嘛。
环境以及工具
AndroidStudio3.1.4
效果展示
整体步骤
MainActivity.kt
/**
* kotlin定位控件方式
* 1.kt中使用xml中Id直接定位控件
* 2.通过父布局id定位到子布局控件
* kotlin点击事件
* 1.匿名内部类
* 2.全局实现OnClickListener接口
* 3.When表达式(加强版的switch) 支持任意类型 支持纯表达式条件分支(类似于if)
*/
class MainActivity : AppCompatActivity(), View.OnClickListener {
override fun onClick(v: View?) {
when (v?.id) {
R.id.btn_click ->
Toast.makeText(this, btn_click.text, Toast.LENGTH_LONG).show()
R.id.btn_click2 ->
Toast.makeText(this, btn_click2.text, Toast.LENGTH_LONG).show()
else ->
Toast.makeText(this, "你点击的是什么鬼", Toast.LENGTH_LONG).show()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
tv_show.text = "定位控件方式1:kotlin告別找ID方式"
ll_content.tv_show2.text = "定位控件方式2:kotlin告別找ID方式"
btn_click.setOnClickListener {
Toast.makeText(this, btn_click.text, Toast.LENGTH_LONG).show()
}
btn_click2.setOnClickListener(this)
}
fun click3(v: View?) {
when (v?.id) {
R.id.btn_click3 ->
Toast.makeText(this, btn_click3.text, Toast.LENGTH_SHORT).show()
}
}
}
复制代码
还是给大家解释解释上面的代码,后面的文章其实都会补充的,毕竟我现在在重构自家公司的产品
-
1.kt中使用xml中Id直接定位控件 tv_show.text = "定位控件方式1:kotlin告別找ID方式",tv_show就是可以直接定位到XML中的控件,这个时候你会问为什么? import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.view.* 两个import 其实都帮我们做好了。
-
2.通过父布局id定位到子布局控件 ll_content.tv_show2.text = "定位控件方式2:kotlin告別找ID方式"
-
1.匿名内部类 btn_click.setOnClickListener { Toast.makeText(this, btn_click.text, Toast.LENGTH_LONG).show() }
-
2.全局实现OnClickListener接口 btn_click2.setOnClickListener(this)
-
3.When表达式(加强版的switch) 支持任意类型 支持纯表达式条件分支(类似于if) else -> Toast.makeText(this, "你点击的是什么鬼", Toast.LENGTH_LONG).show() MainActivity.kt中的when语句中的else 类似于switch 中 default默认分支
MainActivity-XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv_show"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World!" />
<TextView
android:id="@+id/tv_show2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World!" />
<Button
android:id="@+id/btn_click"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="kotlin点击事件(匿名内部类)"
android:textAllCaps="false" />
<Button
android:id="@+id/btn_click2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="kotlin点击事件(全局实现OnClickListener接口)"
android:textAllCaps="false" />
<Button
android:id="@+id/btn_click3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="click3"
android:text="kotlin点击事件(XML中指定onClick属性)"
android:textAllCaps="false" />
</LinearLayout>
复制代码
Kotlin重构系列分享教程
Kotlin重构如何兼容原先的ButterKnife、EventBus3.1