[基本コントロール]---CheckBoxイベントのリスニング処理

6013 ワード

CheckBoxのイベントリスニングの多くの友人は、まずComponentButtonの内部インタフェースOnCheckedChangeListenerを使用することを考えているかもしれません.まず、ComponentButtonコントロールを見てみましょう.それはButtonと継承されています.このButtonには2つの状態が含まれています.選択と選択(このButtonがポイントされると状態が変化します)、ComponentButtonには4つのサブクラスが含まれています.CheckBox、RadioButton、Switch、ToggleButtonは、いずれもステータス切り替えのためのコントロールです.それらのイベントリスニングに対してCompoundButtonを使用する内部インタフェースCompoundButton.OnCheckedChangeListenerは、標準要件を満たしている.しかし、状態切替コントロール(ComponentButton)が比較的多い場合、各コントロールに対してsetOnCheckedChangeListener(new OnCheckedChangeListener(){})を行うと煩雑である.では、このとき私は以下の方法を受け取って実現するのが速いです.
1、xmlレイアウトを先に上げる
<?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>

2、イベントをリスニングするここで説明すると、ComponentoundButtonの「クリックされる」と「選択される」はまったく異なる概念である.ここでは,Viewのonclick法を用いて,この2つの概念の区別と複数のchexboxの傍受を実現する.
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:

                //1、 

                Toast.makeText(this, "meat ", Toast.LENGTH_SHORT).show();

                //2、 

                if (checked){// 

                }

                else// 

                break;

            case R.id.checkbox_cheese:

                //1、 

                Toast.makeText(this, "cheese ", Toast.LENGTH_SHORT).show();

                //2、 

                if (checked){// 

                }

                else// 

                break;

        }

    }

3、まとめて、上記の例では、もちろんクリックされるかどうかを気にせずにxmlレイアウトでandroid:checked=""属性を使用してイベントリスニングで直接switch(view.getId()でリスニングする方法は間違いありませんが、この場合、コードではcheckbox"クリックされる"と"選択される"の2つを区別できません.