主要记录一下CheckBox多选框和RadioGroup、RadioButton单选框的设置以及注册监听器
1.CheckBox
布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:orientation="vertical"tools:context=".MainActivity" ><CheckBox android:id="@+id/eatId"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="吃饭"/><CheckBox android:id="@+id/sleepId"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="睡觉"/><CheckBox android:id="@+id/playId"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="玩游戏"/><CheckBoxandroid:id="@+id/allId"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="全选"/></LinearLayout>
MainActivity:
public class MainActivity extends Activity {private CheckBox eatBox;private CheckBox sleepBox;private CheckBox playBox;private CheckBox allBox;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);eatBox = (CheckBox) findViewById(R.id.eatId);sleepBox = (CheckBox) findViewById(R.id.sleepId);playBox = (CheckBox) findViewById(R.id.playId);allBox = (CheckBox) findViewById(R.id.allId);// OnBoxClickListener listener = new OnBoxClickListener(); // OnBoxCheckedListener listener2 = new OnBoxCheckedListener();CheckedBoxListener listener3 = new CheckedBoxListener();// eatBox.setOnClickListener(listener);// sleepBox.setOnClickListener(listener);// playBox.setOnClickListener(listener); eatBox.setOnCheckedChangeListener(listener3);sleepBox.setOnCheckedChangeListener(listener3);playBox.setOnCheckedChangeListener(listener3);allBox.setOnCheckedChangeListener(new OnCheckedChangeListener(){@Overridepublic void onCheckedChanged(CompoundButton buttonView,boolean isChecked){eatBox.setChecked(isChecked);sleepBox.setChecked(isChecked);playBox.setChecked(isChecked);}});}class CheckedBoxListener implements OnCheckedChangeListener{private int count = 0;@Overridepublic void onCheckedChanged(CompoundButton buttonView,boolean isChecked){if (isChecked){count++;if (count == 3){allBox.setChecked(isChecked);}}else{count--;allBox.setChecked(isChecked);}}}@Overridepublic boolean onCreateOptionsMenu(Menu menu){// Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu);return true;}// CheckBox点击监听器class OnBoxClickListener implements OnClickListener{@Overridepublic void onClick(View view){CheckBox box = (CheckBox) view;if (box.getId() == R.id.eatId){System.out.println("eatBox");} else if (box.getId() == R.id.sleepId){System.out.println("sleepBox");} else if (box.getId() == R.id.playId){System.out.println("playBox");}if (box.isChecked()){System.out.println("Box is checked");} else{System.out.println("Box is unChecked");}System.out.println("CheckBox is clicked!");}}// CheckBox状态改变监听器class OnBoxCheckedListener implements OnCheckedChangeListener{@Overridepublic void onCheckedChanged(CompoundButton buttonView,boolean isChecked){CheckBox box = (CheckBox) buttonView;if (box.getId() == R.id.eatId){System.out.println("eatBox");} else if (box.getId() == R.id.sleepId){System.out.println("sleepBox");} else if (box.getId() == R.id.playId){System.out.println("playBox");}if (isChecked){System.out.println(box.getText() + " is checked!");} else{System.out.println(box.getText() + " is unchecked!");}}}}
2.RadioGroup和RadioButton
RadioGroup中可以放置多个RadioButton单选框,位于同一RadioGroup中的RadioButton每次只能选择一个
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><RadioGroup android:id="@+id/radioGroupId1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><RadioButton android:id="@+id/femailButtonId"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="女"/><RadioButtonandroid:id="@+id/maleButtonId"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="男"/></RadioGroup><RadioGroup android:id="@+id/raidoGroupId2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><RadioButton android:id="@+id/womenButtonId"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="women"/><RadioButton android:id="@+id/manButtonId"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="man"/></RadioGroup></LinearLayout>
MainActivity:
public class MainActivity extends Activity
{private RadioGroup radioGroup;private RadioButton femaleRadio;private RadioButton maleRadio;private RadioGroup radioGroup2;private RadioButton womenRadio;private RadioButton manRadio;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);radioGroup = (RadioGroup)findViewById(R.id.radioGroupId1);femaleRadio = (RadioButton)findViewById(R.id.femailButtonId);maleRadio = (RadioButton)findViewById(R.id.maleButtonId);radioGroup2 = (RadioGroup)findViewById(R.id.raidoGroupId2);womenRadio = (RadioButton)findViewById(R.id.womenButtonId);manRadio = (RadioButton)findViewById(R.id.manButtonId);RadioGroupListener listener = new RadioGroupListener();radioGroup.setOnCheckedChangeListener(listener);radioGroup2.setOnCheckedChangeListener(listener);}class RadioGroupListener implements OnCheckedChangeListener{@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId){if(checkedId == femaleRadio.getId() || checkedId == womenRadio.getId()){womenRadio.setChecked(true);femaleRadio.setChecked(true);System.out.println("femaleRadio is cheched!");}else if(checkedId == maleRadio.getId() || checkedId == manRadio.getId()){manRadio.setChecked(true);maleRadio.setChecked(true);System.out.println("maleRadio is checked!");}}}class RadioButtonListener implements android.widget.CompoundButton.OnCheckedChangeListener{@Overridepublic void onCheckedChanged(CompoundButton buttonView,boolean isChecked){if(isChecked){System.out.println("RadioButton is checked!");}}}@Overridepublic boolean onCreateOptionsMenu(Menu menu){// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
注意:我们可以给RadioGroup注册一个OnCheckedChangeListener,引用的是android.widget.RadioGroup.OnCheckedChangeListener这个包下的监听器,其里面的方法是:
// group表示当前选中的这一组的RadioGroup对象,checkId表示的是当前这组中选中的那个单选框的ID
public void onCheckedChanged(RadioGroup group, int checkedId){if(checkedId == femaleRadio.getId() || checkedId == womenRadio.getId()){womenRadio.setChecked(true);femaleRadio.setChecked(true);System.out.println("femaleRadio is cheched!");}else if(checkedId == maleRadio.getId() || checkedId == manRadio.getId()){manRadio.setChecked(true);maleRadio.setChecked(true);System.out.println("maleRadio is checked!");}}
而我们还可以给每个RadioButton注册一个OnCheckedChangeListener,但是这里就要使用 android.widget.CompoundButton.OnCheckedChangeListener 这个监听器类,其里面的方法:
// buttonView表示的就是当前调用这个方法的那个RadioButton对象,isChecked表示当前是否为选择
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked){if(isChecked){System.out.println("RadioButton is checked!");}}