Android(5)多选按钮CheckBox、OnClickListener、OnCheckedChangeListener

来源:互联网 发布:精子优化处理检查 编辑:程序博客网 时间:2024/05/16 16:04
public class MainActivity extends ActionBarActivity {    private CheckBox eatBox;    private CheckBox sleepBox;    private CheckBox shopBox;    private CheckBox all;    private LinearLayout mCheckedLayout;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        eatBox = (CheckBox)findViewById(R.id.eat);        sleepBox = (CheckBox)findViewById(R.id.sleep);        shopBox = (CheckBox)findViewById(R.id.shop);        all = (CheckBox)findViewById(R.id.all);        mCheckedLayout = (LinearLayout)findViewById(R.id.checked);//      BoxClickListener listener = new BoxClickListener();        clickBoxCheckListener listener = new clickBoxCheckListener();        eatBox.setOnCheckedChangeListener(listener);        sleepBox.setOnCheckedChangeListener(listener);        shopBox.setOnCheckedChangeListener(listener);        all.setOnCheckedChangeListener(listener);    }    class clickBoxCheckListener implements OnCheckedChangeListener{        @Override        public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {            if(buttonView.getId() == R.id.eat){                System.out.println("eat");            }else if(buttonView.getId() == R.id.sleep){                System.out.println("sleep");            }else if(buttonView.getId() == R.id.shop){                System.out.println("shop");            }else if(buttonView.getId() == R.id.all){            }            if(isChecked == true && buttonView.getId() == R.id.all){                for(int i = 0;i < mCheckedLayout.getChildCount();i++){                    CheckBox cb = (CheckBox)mCheckedLayout.getChildAt(i);                    cb.setChecked(true);                }            }else if(isChecked == false && buttonView.getId() == R.id.all){                for(int i = 0;i < mCheckedLayout.getChildCount();i++){                    CheckBox cb = (CheckBox)mCheckedLayout.getChildAt(i);                    cb.setChecked(false);                }                System.out.println("enchecked");            }        }    }//  class BoxClickListener implements android.view.View.OnClickListener{////      @Override//      public void onClick(View v) {//          CheckBox cb = (CheckBox)v;//          if(cb.getId() == R.id.eat){//              System.out.println("eat");//          }else if(cb.getId() == R.id.sleep){//              System.out.println("sleep");//          }else if(cb.getId() == R.id.shop){//              System.out.println("shop");//          }//          if(cb.isChecked()){//              System.out.println("checked");//          }else{//              System.out.println("unchecked");//          }//      }//  }}

OnClickListener将View向下转型,通过ID判断是哪个CheckBox,OnClickListener只要勾选框有变化就会触发,无论是选中还是取消选中。

OnCheckedChangeListener,CompoundButton 即当前多选框的选项,当勾选的状态发生改变该方法才会被触发。
这里写图片描述

0 0
原创粉丝点击