效果图:
简单讲解一下原理:每个多选框都是独立的,可以通过迭代所有多选框,然后根据其状态是否被选中再获取其值。
CheckBox.setChecked(true);//设置成选中状态。
CheckBox.getText();//获取多选框的值
调用setOnCheckedChangeListener()方法,处理多选框被选择事件,把CompoundButton.OnCheckedChangeListener实例作为参数传入
1、布局文件:
- <RelativeLayout 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"
- tools:context=".MainActivity" >
- <CheckBox
- android:id="@+id/checkBox1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"
- android:layout_marginLeft="40dp"
- android:layout_marginTop="28dp"
- android:text="@string/check_java" />
- <CheckBox
- android:id="@+id/checkBox2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignLeft="@+id/checkBox1"
- android:layout_below="@+id/checkBox1"
- android:layout_marginTop="39dp"
- android:text="@string/check_.net" />
- <CheckBox
- android:id="@+id/checkBox3"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignLeft="@+id/checkBox2"
- android:layout_below="@+id/checkBox2"
- android:layout_marginTop="47dp"
- android:text="@string/check_php" />
- <CheckBox
- android:id="@+id/checkBox4"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignLeft="@+id/checkBox3"
- android:layout_below="@+id/checkBox3"
- android:layout_marginTop="40dp"
- android:text="@string/check_3G" />
- <Button
- android:id="@+id/button1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignRight="@+id/checkBox2"
- android:layout_below="@+id/checkBox4"
- android:layout_marginTop="58dp"
- android:onClick="getValues"
- android:text="@string/text_get" />
- </RelativeLayout>
2、布局文件中引用的string.xml的值
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="app_name">lession16-checkbox</string>
- <string name="action_settings">Settings</string>
- <string name="hello_world">Hello world!</string>
- <string name="check_java">java专业</string>
- <string name="check_.net">.net专业</string>
- <string name="check_php">php专业</string>
- <string name="check_3G">3G专业</string>
- <string name="text_get">获取值</string>
- </resources>
3、MainActivity中的代码:
- package com.example.lession16_checkbox;
- import java.util.ArrayList;
- import java.util.List;
- import android.os.Bundle;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.view.Menu;
- import android.view.View;
- import android.widget.CheckBox;
- import android.widget.CompoundButton;
- import android.widget.Toast;
- public class MainActivity extends Activity {
- //声明组件
- private CheckBox cb1,cb2,cb3,cb4;
- //声明一个集合
- private List<CheckBox> checkBoxs=new ArrayList<CheckBox>();
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- //获取组件
- cb1 = (CheckBox) findViewById(R.id.checkBox1);
- cb2 = (CheckBox) findViewById(R.id.checkBox2);
- cb3 = (CheckBox) findViewById(R.id.checkBox3);
- cb4 = (CheckBox) findViewById(R.id.checkBox4);
- //默认选项
- cb2.setChecked(true);
- cb4.setChecked(true);
- //注册事件
- cb1.setOnCheckedChangeListener(listener);
- cb2.setOnCheckedChangeListener(listener);
- cb3.setOnCheckedChangeListener(listener);
- cb4.setOnCheckedChangeListener(listener);
- //把四个组件添加到集合中去
- checkBoxs.add(cb1);
- checkBoxs.add(cb2);
- checkBoxs.add(cb3);
- checkBoxs.add(cb4);
- }
- @Override
- public 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;
- }
- public void getValues(View v) {
- String content = "";
- for (CheckBox cbx : checkBoxs) {
- if (cbx.isChecked()) {
- content += cbx.getText() + "\n";
- }
- }
- if ("".equals(content)) {
- content = "您还没有选择尼";
- }
- new AlertDialog.Builder(this).setMessage(content).setTitle("选中的内容如下")
- .setPositiveButton("关闭", null).show();
- }
- CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView,
- boolean isChecked) {
- // TODO Auto-generated method stub
- CheckBox box = (CheckBox) buttonView;
- Toast.makeText(getApplicationContext(),
- "获取的值:" + isChecked + "xxxxx" + box.getText(),
- Toast.LENGTH_LONG).show();
- }
- };
- }