私の著書のAndroid SDKポケットリファレンスでまだ対応できていないKotlin化ですが、業務でも利用される機会が多くなってきているかと思います。
少しでもお役に立てるように、Kotlin化した場合にどのように書いていくのかを紹介していくコーナー。
今回はチェックボックスのチェック処理を紹介します。
Javaで書いた場合とKotlinで書いた場合の両方を紹介していきますので、見比べてみて参考にしてください。
今回のサンプルプロジェクトは以下に格納しています。
それでは、早速始めましょう。
レイアウト定義
チェックボックスの表示にはレイアウトでの定義が必要になります。
以下のように実装を行います。
1 2 3 4 5 6 7 8 9 | <CheckBox android:id= "@+id/sample_checkbox" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:text= "選択してください" app:layout_constraintBottom_toBottomOf= "parent" app:layout_constraintLeft_toLeftOf= "parent" app:layout_constraintRight_toRightOf= "parent" app:layout_constraintTop_toTopOf= "parent" /> |
チェック処理
Javaでチェックボックスの処理を書く場合には、以下のように書くかと思います。
1 2 3 4 5 6 7 8 9 10 11 12 | CheckBox sampleCheckbox = findViewById(R.id.sample_checkbox); sampleCheckbox.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { String message = "" ; if (isChecked) { message = "チェックボックスが 選択されました" ; } else { message = "チェックボックスが 選択解除されました" ; } Toast.makeText( this , message, Toast.LENGTH_SHORT).show(); } } |
上記をKotlinで書き換えると、以下のようにシンプルに書くことが可能です。
1 2 3 4 5 | val sampleCheckBox: CheckBox = findViewById(R.id.sample_checkbox) sampleCheckBox.setOnCheckedChangeListener { _, isChecked -> val stateMessage = if (isChecked) "選択されました" else "選択解除されました" Toast.makeText( this , "チェックボックスが $stateMessage" , Toast.LENGTH_SHORT).show() } |
ラムダ式を用いることで、シンプルにまとめることができます。
また、文字列に変数を埋め込むString Templateを用いることで、より簡潔に書くことができます。
チェックボックスは設定画面など様々な設定などによく使う機能となります。
実務でもよく見かける機会が多いかと思います。参考にしてみてください。
「[Kotlin] チェックボックスのチェックを処理する」への3件のフィードバック