• Android血刀之CheckBox之问卷调查


    传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229


    血刀

            《连城诀》血刀老祖的血刀,削铁如泥的,刀身软,血刀刀法奥妙无比,后为狄云所得。

            今天我们学习如何利用Android平台“血刀”CheckBox来实现问卷调查,与RadioButton不同,CheckBox可以实现多选(复选)。在收集和整理用户兴趣和社会关系时,使用非常广泛。下面给出该情景的案例:

    1案例技术要点

    (1)getLayoutInflater():获取当前Activity的布局填充器;inflate(...):进行布局填充。
    (2)为CheckBox所在的Activity实现点击事件的监听OnClickListener,并且为CheckBox引入该监听。
    (3)android.app.AlertDialog:Android提示框类 
    AlertDialog.Builder():获取提示框构造器
    setMessage(...):设置提示框内容
    setPositiveButton(...):设置提示框确定按钮及内容
    show():显示提示框

    2案例代码陈列

    2.1AndroidManifest.xml

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.android.checkbox"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="15" />
    
        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name" >
            <activity
                android:name=".CheckBoxMainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>

    2.2strings.xml

    <resources>
        <string name="app_name">CheckBox问卷调查</string>
        <string name="button">确定</string>
    </resources>

    2.3checkbox.xml

    <?xml version="1.0" encoding="utf-8"?>
    <CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/checkbox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    
    </CheckBox>

    2.4main.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/button" />
    
    </LinearLayout>
    

    2.5CheckBoxMainActivity.java

    package com.android.checkbox;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.CheckBox;
    import android.widget.LinearLayout;
    
    /**
     * CheckBox案例:问卷调查
     * CheckBox默认情况下是未选中的状态, 如果想修改这个默认值的话,可以将<checkbox>中的android:checked设置为true,
     * 或者使用CheckBox.setChecked()方法设置都可以实现复选的功能
     * @author lynnli1229
     */
    public class CheckBoxMainActivity extends Activity implements OnClickListener {
        private List<CheckBox> checkBoxs = new ArrayList<CheckBox>();
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            String[] checkBoxText = new String[] { "您是学生吗?", "是否喜欢android?", "您喜欢旅游吗?", "打算出国吗?" };
            // 动态加载布局
            LinearLayout layout = (LinearLayout) getLayoutInflater().inflate(R.layout.main, null);
            // 给指定的checkbox赋值
            for (int i = 0; i < checkBoxText.length; i++) {
                // 获取checkbox布局
                CheckBox checkBox = (CheckBox) getLayoutInflater().inflate(R.layout.checkbox, null);
                checkBoxs.add(checkBox);
                checkBoxs.get(i).setText(checkBoxText[i]);
                // 将checkbox布局添加到线性布局中
                layout.addView(checkBox, i);
            }
            setContentView(layout);
            Button button = (Button) findViewById(R.id.button);
            button.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            String str = "";
            for (CheckBox checkBox : checkBoxs) {
                if (checkBox.isChecked()) {
                    str += checkBox.getText() + "\n";
                }
            }
            if ("".equals(str)) {
                str = "您还没有选中任何选项!";
            }
            new AlertDialog.Builder(this).setMessage(str).setPositiveButton("关闭", null).show();
        }
    
    }

    3案例效果展示

     
  • 相关阅读:
    [Xcode 实际操作]六、媒体与动画-(17)使用MediaPlayer框架播放视频
    [Xcode 实际操作]六、媒体与动画-(16)实现音乐的背景播放
    [Xcode 实际操作]六、媒体与动画-(15)使用AudioPlayer播放音乐
    [Xcode 实际操作]六、媒体与动画-(14)使用SystemSoundId播放简短声音
    [Xcode 实际操作]六、媒体与动画-(13)使用UIImageView制作帧动画
    [Swift]LeetCode148. 排序链表 | Sort List
    [Swift]LeetCode147. 对链表进行插入排序 | Insertion Sort List
    [Swift]LeetCode146. LRU缓存机制 | LRU Cache
    【POJ3615】Cow Hurdles 最短路,你若LCA,我仍不拦你。
    How MapReduce Works
  • 原文地址:https://www.cnblogs.com/innosight/p/3271240.html
Copyright © 2020-2023  润新知