AlertDialog.Builder中的setMultiChoiceItems中的事件处理[通俗易懂]

AlertDialog.Builder中的setMultiChoiceItems中的事件处理

大家好,又见面了,我是全栈君。

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

效果图:

AlertDialog.Builder中的setMultiChoiceItems中的事件处理[通俗易懂]

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

        控件.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的朋友有所帮助~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115919.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • phpstrom 激活码2021【在线破解激活】

    phpstrom 激活码2021【在线破解激活】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
  • 三门问题的计算机模拟,三门问题是指_数学三门问题

    三门问题的计算机模拟,三门问题是指_数学三门问题三门问题(MontyHallproblem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let’sMakeaDeal。问题名字来自该节目的主持人蒙提·霍尔(MontyHall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两…

    2022年10月22日
  • 适配器及其作用[通俗易懂]

    适配器及其作用[通俗易懂]1.适配器适配器是一个接口转换器,它可以是一个独立的硬件接口设备,允许硬件或电子接口与其它硬件或电子接口相连,也可以是信息接口。但是现在的计算机主板上就已经嵌入了适配器,因此现在的计算机上的适配器不是独立的。2.适配器的作用1.要进行数据串行传输和并行传输的转换。2.对数据进行缓存。3.实现以太网协议。4.管理该适配器的设备驱动程序安装在计算机的操作系统。…

    2022年6月12日
  • java淘宝秒杀脚本(已自测)

    java淘宝秒杀脚本(已自测)点赞再看,养成习惯,全网无BUG的java淘宝秒杀脚本!!!开场白我的室友如花是个貌美如花的黄花大闺女,这不是放假,大家都在宿舍幻想未来,只有翠花在睡觉,突然,翠花原地炸起,说了一句:“我要学习用java写一个淘宝秒杀脚本!!!”大家一脸茫然的看着如花,脚本是什么?Nginx是什么?我赶紧上网查了一下。一、pandas是什么?示例:pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):impor.

    2022年5月10日
  • AWVS工具介绍[通俗易懂]

    AWVS工具介绍[通俗易懂]AWVS基本操作  AWVS工具在网络安全行业中占据着举足轻重的地位,作为一名安全服务工程师,AWVS这款工具在给安全人员做渗透测试工作时带来了巨大的方便,大大的提高了工作效率。AWVS工具介绍  AcunetixWebVulnerabilityScanner(简称AWVS)是一款知名的Web网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。它包含有收费和免…

    2022年4月19日
  • 哈佛结构与冯.诺依曼结构(普林斯顿结构)[通俗易懂]

    哈佛结构与冯.诺依曼结构(普林斯顿结构)[通俗易懂]过去知道计算机的体系结构分为哈佛结构与冯.诺依曼结构,但并没有去总结他们有什么区别。今天来看看它们有什么区别。冯.诺依曼结构,又称为普林斯顿结构。是一种经典的体系结构,有CPU,总线,外部存储器组成。这种体系结构采用程序代码存储器与数据存储器合并在同一存储器里,但程序代码存储器地址与数据存储器地址分别指向不同的物理地址。程序指令宽度与数据宽度一样。数据总线和地址总线共用。但是随着CPU设计

    2022年10月4日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号