因为实习项目中涉及到类似于时钟设置闹钟反复时间的原因须要使用对话框的方式呈现。因为DialogFragment眼下还没实验出嵌套Fragment的方法。所以临时先用AlertDialog.Builder中的setMultiChoiceItems取代,因为网上搜索时都仅仅有显示的代码,没有关于点击事件进行操作的演示样例。所以依据项目自己整理了一下

效果图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXJEaW9yZG5h/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

逻辑:用户点击取消则销毁对话框,点击确定会将勾选的星期数存下来。下次再次点击的话之前选中的星期数会自己主动勾选上



        控件.setOnClickListener(//设置控件的点击事件

                new OnClickListener() {

                    @Override

                    public void onClick(View v) {

                        boolean[] isChecked = { false, false, false, false,

                                false, false, false };

                        for (int i = 0; i < DAY_OF_WEEK.length; i++) {

                            if (mSelectedDays.indexOf(DAY_OF_WEEK[i]) != -1) {

                                isChecked[i] = true;  

                            }

                        }//isChecked是一个boolean[],mSelectedDays存放的是用户之前的选择。DAY_OF_WEEK[]则是一个存放星期数的一个常量字符串数组

                        new AlertDialog.Builder(getActivity())

                                .setTitle("选择时间")//标题栏

                                .setMultiChoiceItems(//设置多选条目模式的对话框

                                        new String[] { "星期一", "星期二", "星期三",

                                                "星期四", "星期五", "星期六", "星期日" },//选项条

                                        isChecked,//这个參数必须是boolean[]的,不能使Boolean[]的,有几个item就数组长度几个,true为勾选,false则相反

                                        new DialogInterface.OnMultiChoiceClickListener() {//此处的Listener导包的话须要导入DialogInterface包,假设像我一样因为这个类中须要使用到View中的Listener,则能够按我这样的方式加上前缀

                                            @Override

                                            public void onClick(

                                                    DialogInterface dialog,

                                                    int which, boolean isChecked) {

                                                if (isChecked) {//which代表的是被点击的item的标号。从0開始,假设被选中即isChecked==true

                                                    if (mSelectedDays

                                                            .indexOf(DAY_OF_WEEK[which]) == -1) {

                                                        mSelectedDays

                                                                .append(DAY_OF_WEEK[which]);

                                                    }

                                                } else {

                                                    int index = mSelectedDays

                                                            .indexOf(DAY_OF_WEEK[which]);

                                                    if (index != -1) {

                                                        mSelectedDays

                                                                .deleteCharAt(index);

                                                    }

                                                }

                                            }

                                        })

                                .setPositiveButton("确定",  //positiveButton即确定button,negativeButton为取消button

                                        new DialogInterface.OnClickListener() {//此对确定button的点击事件进行设置于处理

                                            @Override

                                            public void onClick(

                                                    DialogInterface dialog,

                                                    int which) {

                                                TextView repeatValue = (TextView) getActivity()

                                                        .findViewById(

                                                                R.id.repeat_values);

                                                repeatValue.setText(mSelectedDays);

                                            }

                                        })

                                .setNegativeButton("取消",null).show();

                    }

                });

        return repeatFragmentView;

    }

}

尽管是非常基础的知识。可是希望对初学Android的朋友有所帮助~

AlertDialog.Builder中的setMultiChoiceItems中的事件处理的更多相关文章

  1. 关于AlertDialog.Builder(Context context)中所应传入的context

    错误报告: 10-20 14:34:46.565: E/AndroidRuntime(23098): FATAL EXCEPTION: main10-20 14:34:46.565: E/Androi ...

  2. Stack Overflow 排错翻译 - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder

    Stack Overflow 排错翻译  - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder 转自:ht ...

  3. 如何获取一个AlertDialog中的EditText中输入的内容

    怎么获取一个AlertDialog中的EditText中输入的内容? new AlertDialog.Builder(this)   .setTitle("请输入")   .set ...

  4. Builder模式在Java中的应用

    在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成.那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Build ...

  5. Android零基础入门第34节:Android中基于监听的事件处理

    原文:Android零基础入门第34节:Android中基于监听的事件处理 上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本 ...

  6. AlertDialog.Builder对话框类的用法

    1.在测试时,如何实现一个提示 可以使用 Toast.makeText(this, "这是一个提示", Toast.LENGTH_SHORT).show(); //从资源文件str ...

  7. android AlertDialog.Builder

    AlertDialog的构造方法全部是Protected的,所以不能直接通过new一个AlertDialog来创建出一个AlertDialog. 要创建一个AlertDialog,就要用到AlertD ...

  8. 对话框AlertDialog.Builder使用方法

    我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等 ...

  9. Android详细的对话框AlertDialog.Builder使用方法

      我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继 ...

随机推荐

  1. tomcat root dir log 配置

    tomcat 配置log记录及root 目录

  2. vs2010中看不见类视图和资源视图的解决方法

    vs2010工程中,因为删除了“vcxproj.filter”文件,所以导致资源视图看不见了. 解决方法是:先关掉工程,将工程对应的扩展名为.suo和.sdf删除,重新打开解决方案,问题解决.

  3. 【csdn】文章很好 - system函数遇到的问题

    system函数遇到的问题http://blog.csdn.net/yangzhenzhen/article/details/51505176

  4. ASP.Net MVC中数据库数据导出Excel,供HTTP下载

    本文来自:http://www.cnblogs.com/hipo/archive/2012/03/13/2394019.html 一.关于下载 一般对下载权限有没有限制,或安全性要求不高的情况下,基于 ...

  5. 依赖注入及AOP简述(三)——依赖注入的原理

    3.     “依赖注入”登场 于是诸多优秀的IT工程师开始想出了更加轻量便利.更加具有可测试性和可维护性的设计模式——IoC模式.IoC,即Inversion of Control的缩写,中文里被称 ...

  6. Font Awesome 4.0.3 提供了369个网页常用的矢量字体图标

    Font Awesome 为您提供了一套可缩放的字体矢量图标,可以快速自定义图标的大小,颜色,阴影,这些都可以通过CSS来实现,无需任何的JS代码哦. 一,主要特点如下: 1,一个字体,369个图标 ...

  7. 【拓扑排序】【HDU3231】【Box Relations】

    题目大意: N个盒子 给你K个以下关系 1.A和B有重叠 2.A在B的左边且不重叠 3.A在B的前边且不重叠 4.A在B的上面且不重叠 显然单独分配X坐标处理2(x1<x2<x1'< ...

  8. 前端开发必备的Sublime 3插件

    Sublime的大名已经无需我介绍了,首先先介绍如何启用插件安装功能: 打开Sublime 3,然后按 ctrl+` 或者在View → Show Console 在打开的窗口里黏贴这个网站上的代码( ...

  9. javascript模式——Prototype模式

    GoF权威的解释是,原型模式是一种通过对一个对象的克隆,创建基于这个对象的多种对象的模式. 为了实现这种原型模式,可以直接使用ECMAScript 5 中的方法Object.create.它不紧可以创 ...

  10. RequiredFieldValidator验证下拉列表框

    <asp:DropDownList ID="DropDownList1" runat="server" CssClass="style01&qu ...