目标:1.使用OnCheckedChangeListener和OnclickListener两种监听器为CheckBox添加监听器。
2.CheckBox用不同颜色区分不同的监听器。
3.增加全选操作。
4.使用Toast显示选择状态
效果一,模拟器环境Android4.2显示:
效果二,真机Android2.3.7显示:
代码:
activity_main.xml
<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:background="@drawable/tree" android:orientation="vertical" tools:context=".MainActivity" > <CheckBox android:id="@+id/eatBox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="吃饭饭" android:textColor="#0ff000" /> <CheckBox android:id="@+id/sleepBox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="睡觉觉" android:textColor="#0ff000" /> <CheckBox android:id="@+id/beatBox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="打豆豆" android:textColor="#0ff000" /> <CheckBox android:id="@+id/allCheckBox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="全选" android:textColor="#0ff000" /> <CheckBox android:id="@+id/sisterBox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="妹妹" android:textColor="#0fffff" /> <CheckBox android:id="@+id/brotherBox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="哥哥" android:textColor="#0fffff" /> </LinearLayout>
MainActivity.java
package com.haut.a02_checkbox; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.Toast; public class MainActivity extends Activity { // 声明CheckBox private CheckBox eatBox; private CheckBox sleepBox; private CheckBox beatBox; private CheckBox allCheckBox; private CheckBox sisterBox; private CheckBox brotherBox; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取CheckBox eatBox = (CheckBox) findViewById(R.id.eatBox); sleepBox = (CheckBox) findViewById(R.id.sleepBox); beatBox = (CheckBox) findViewById(R.id.beatBox); allCheckBox = (CheckBox) findViewById(R.id.allCheckBox); sisterBox = (CheckBox) findViewById(R.id.sisterBox); brotherBox = (CheckBox) findViewById(R.id.brotherBox); // 使用OnclickListener为CheckBox添加监听器 BoxOnClickListener boxOnClickListener = new BoxOnClickListener(); eatBox.setOnClickListener(boxOnClickListener); sleepBox.setOnClickListener(boxOnClickListener); beatBox.setOnClickListener(boxOnClickListener); allCheckBox.setOnClickListener(boxOnClickListener); // 使用OnCheckedChangeListener为CheckBox添加监听器 BoxOnCheckedChangeListener boxOnCheckedChangeListener = new BoxOnCheckedChangeListener(); sisterBox.setOnCheckedChangeListener(boxOnCheckedChangeListener); brotherBox.setOnCheckedChangeListener(boxOnCheckedChangeListener); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } // 使用OnclickListener为CheckBox添加监听器 class BoxOnClickListener implements OnClickListener { public void onClick(View v) { CheckBox checkBox = (CheckBox) v; if (checkBox.getId() == R.id.eatBox) { if (checkBox.isChecked()) { Toast.makeText(MainActivity.this, "已选吃饭饭", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "吃饭饭取消已选", Toast.LENGTH_SHORT).show(); } } else if (checkBox.getId() == R.id.sleepBox) { if (checkBox.isChecked()) { Toast.makeText(MainActivity.this, "已选睡觉觉", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "睡觉觉取消已选", Toast.LENGTH_SHORT).show(); } } else if (checkBox.getId() == R.id.beatBox) { if (checkBox.isChecked()) { Toast.makeText(MainActivity.this, "已选打豆豆", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "打豆豆取消已选", Toast.LENGTH_SHORT).show(); } }else if(checkBox.getId() == R.id.allCheckBox){ if (checkBox.isChecked()) { eatBox.setChecked(true); sleepBox.setChecked(true); beatBox.setChecked(true); } else { eatBox.setChecked(false); sleepBox.setChecked(false); beatBox.setChecked(false); } } } } // 使用OnCheckedChangeListener为CheckBox添加监听器 class BoxOnCheckedChangeListener implements OnCheckedChangeListener { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (buttonView.getId() == R.id.sisterBox) { if (isChecked) { Toast.makeText(MainActivity.this, "已选妹妹", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "妹妹取消已选", Toast.LENGTH_SHORT).show(); } } else if (buttonView.getId() == R.id.brotherBox) { if (isChecked) { Toast.makeText(MainActivity.this, "已选哥哥", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "哥哥取消已选", Toast.LENGTH_SHORT).show(); } } } } }