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

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

jsc10年前 (2016-04-06)Android3412

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

在Android程序运行中,线程之间或者线程内部进行信息交互时经常会使用到消息,如果我们熟悉这些基础的东西及其内部的原理,将会使我们的Android开发变的容易、可以更好地架构系统。在学习Android消息机制之前,我们先了解与消息有关的几个类:  1.Message  消息对象,顾名思义就是记录消...

Android开发中Bundle用法 包裹数据

SDK里是这样描述:A mapping from String values to various Parcelable types。  它帮助我将数据打包传入intent里面,为使用这些数据提供了便利。protected void onListItemClick (L...

android异步任务详解 AsynTask

android异步任务详解 AsynTask

android提供了一套专门用于异步处理的类。即:AynsTask类。使用这个类可以为耗时程序开辟一个新线程进行处理,处理完时返回。其实,AsynTask类就是对Thread类的一个封装,并且加入了一些新的方法。编程时,两者都可以实现同样的功能。本文后面将对AsynTask和Thread...

java.util.Properties类

java.util.Properties类

一、认识properties文件   1、properties文件是一个文本文件 2、properties文件的语法有两种,一种是注释,一种属性配置。  注    释...

Android中Parcelable接口用法

1. Parcelable接口Interface for classes whose instances can be written to and restored from a Parcel。 Classes implementing the Parcelable interface m...

【代码】android 调用系统视频录制并生成缩略图

package com.example.videocapture; import android.app.Activity; import android.content.Intent; import android.database.Cursor;...