チェックボックス

チェックボックスを使用すると、選択肢のセットから 1 つ以上を選択できます。通常、各チェックボックスの選択肢は縦に表示する必要があります。

チェックボックスの各選択肢を作成するには、レイアウトで CheckBox を作成します。チェックボックス選択肢のセットでは複数のアイテムを選択できるため、各チェックボックスは個別に管理され、チェックボックスごとにクリック リスナーを登録する必要があります。

キーとなるクラスは次のとおりです。

クリック イベントへの応答

ユーザーがチェックボックスを選択すると、CheckBox オブジェクトは on-click イベントを受け取ります。

チェックボックスのクリック イベント ハンドラを定義するには、XML レイアウトの <CheckBox> 要素に android:onClick 属性を追加します。この属性の値には、クリック イベントに応じて呼び出すメソッドの名前を指定する必要があります。次に、レイアウトをホストする Activity で、対応するメソッドを実装する必要があります。

リスト内の一対の CheckBox オブジェクトの例を次に示します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <CheckBox android:id="@+id/checkbox_meat"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/meat"
        android:onClick="onCheckboxClicked"/>
    <CheckBox android:id="@+id/checkbox_cheese"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/cheese"
        android:onClick="onCheckboxClicked"/>
</LinearLayout>

このレイアウトをホストする Activity 内で、次のメソッドは両方のチェックボックスのクリック イベントを処理します。

Kotlin

fun onCheckboxClicked(view: View) {
    if (view is CheckBox) {
        val checked: Boolean = view.isChecked

        when (view.id) {
            R.id.checkbox_meat -> {
                if (checked) {
                    // Put some meat on the sandwich
                } else {
                    // Remove the meat
                }
            }
            R.id.checkbox_cheese -> {
                if (checked) {
                    // Cheese me
                } else {
                    // I'm lactose intolerant
                }
            }
            // TODO: Veggie sandwich
        }
    }
}

Java

public void onCheckboxClicked(View view) {
    // Is the view now checked?
    boolean checked = ((CheckBox) view).isChecked();

    // Check which checkbox was clicked
    switch(view.getId()) {
        case R.id.checkbox_meat:
            if (checked)
                // Put some meat on the sandwich
            else
                // Remove the meat
            break;
        case R.id.checkbox_cheese:
            if (checked)
                // Cheese me
            else
                // I'm lactose intolerant
            break;
        // TODO: Veggie sandwich
    }
}

android:onClick 属性で宣言するメソッドには、上記のとおりの署名が必要です。具体的なメソッドの要件は以下のとおりです。

  • public である
  • void を返す
  • View を唯一のパラメータとして定義する(これがクリックされた View になります)

ヒント: チェックボックスの状態をアプリで変更する必要がある場合は、setChecked(boolean) または toggle() メソッドを使用します。