[基本コントロール]---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レイアウトを先に上げる
2、イベントをリスニングするここで説明すると、ComponentoundButtonの「クリックされる」と「選択される」はまったく異なる概念である.ここでは,Viewのonclick法を用いて,この2つの概念の区別と複数のchexboxの傍受を実現する.
3、まとめて、上記の例では、もちろんクリックされるかどうかを気にせずにxmlレイアウトでandroid:checked=""属性を使用してイベントリスニングで直接switch(view.getId()でリスニングする方法は間違いありませんが、この場合、コードではcheckbox"クリックされる"と"選択される"の2つを区別できません.
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つを区別できません.