Kotlin重構初體驗之告別FindViewById

NO IMAGE

前言

我希望我的文章不要彎彎繞繞,直接貼代碼希望大家可以看得懂,看完文章可以達到學習的第一個里程碑,至於後面原理慢慢的補上就是了,畢竟業務和解決問題優先嘛。

環境以及工具

AndroidStudio3.1.4

效果展示

Kotlin重構初體驗之告別FindViewById

整體步驟

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環境搭建

Kotlin重構初體驗之告別FindViewById

Kotlin重構如何兼容原先的ButterKnife、EventBus3.1

請關注我(分享日常開發)

Kotlin重構初體驗之告別FindViewById

相關文章

Kotlin控制語句ifwhenforwhile

Kotlin基本類型

Python爬蟲之旅之豆瓣音樂

Python爬蟲之旅之Selenium庫的使用