当前位置:首页 > Android > 正文内容

安卓对话框之----多选框(CheckBox)

jsc10年前 (2016-04-06)Android3229

简单讲解一下原理:每个多选框都是独立的,可以通过迭代所有多选框,然后根据其状态是否被选中再获取其值。
 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();  
  
        }  
    };  
  
}

效果图:

20130625172442765.jpg

扫描二维码推送至手机访问。

版权声明:本文由微小站发布,如需转载请注明出处。

本文链接:https://jsc0.com/post/72.html

分享给朋友:

“安卓对话框之----多选框(CheckBox) ” 的相关文章

Android Location在GPS中的应用(一)

Android Location在GPS中的应用(一)

新建AndroidProject,注意选择Google APIs:  打开AndroidManifest.xml,在其中加入GPS使用权限: <uses-permission android:name="android.permission.ACCESS_COARSE_LO...

onTextChanged参数解释及实现EditText字数监听

由于最近做项目要检测EditText中输入的字数长度,从而接触到了Android中EditText的监听接口,TextWatcher。它有三个成员方法,第一个after很简单,这个方法就是在EditText内容已经改变之后调用,重点看下面两个方法:beforeTextChanged(CharSequ...

采用SharedPreferences保存用户偏好设置参数和读取设置参数

采用SharedPreferences保存用户偏好设置参数和读取设置参数

Android SDK支持那些文件存储技术? 1. 使用SharedPreferences保存key-value类型的数据 2. 流文件存储(使用openFileOutput和openFileInput方法,或FileInputStream和FileO...

Android SharedPreferences PreperenceScreen 偏好数据存取

SharedPreferences是一个接口,程序是无法创建SharedPreferences实例的,1、Context.getSharedPreferences(String name,int mode)来得到一个指定name的SharedPreferences实例2、PreferenceMana...

android 定时循环执行任务

一、执行循环的函数如下:private Handler handler = new Handler();         private Runnable&...

Android经过Intent传输包含自定义类的ArrayList

Android通过Intent传输包含自定义类的ArrayList前言之前项目中通过Intent只是传输简单的字符串,这次因为需要在前一个页面联网获取对象数据,然后在下一个页面使用,所以考虑到使用Intent传输包含自定义类的ArrayList。SerializableJava的对象序列化指的是将那...