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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python注释多行代码快捷键_python粘贴快捷键

    python注释多行代码快捷键_python粘贴快捷键Pycharm有着丰富且强大的快捷键组合,如果能熟练掌握常见快捷键的使用,那么绝对能提高你代码的编写效率和质量。之前写过一篇Pycharm常用的10个windows快捷键Pycharm最高效的快捷键集合,当然这只是快捷键中的很小一部分,还有很多高效的快捷键没有介绍到,今天就把所有的快捷键进行统一整理,包括windows和mac下的快捷键集合,便于后期查阅使用(文末附下载方式)。Pycharm常用快…

    2022年8月26日
    7
  • java的遍历数组效率测试源码[通俗易懂]

    java的遍历数组效率测试源码[通俗易懂]packagejavatest;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;publicclassjavatest{ publicstaticvoidmain(String[]args){ Listlist=newArrayList(); l

    2025年11月23日
    6
  • 移动APP漏洞自动化检测平台建设

    移动APP漏洞自动化检测平台建设前言:本文是《移动APP客户端安全笔记》系列原创文章中的第一篇,主要讲的是企业移动APP自动化漏洞检测平台建设,移动APP漏洞检测发展史与前沿技术,APP漏洞检测工具与平台,以及笔者的一些思考。希望能对移动App自动化漏洞检测感兴趣的同学有所帮助,限于笔者技术水平与文章篇幅,有些内容暂没有逐一详细分析,后续我争取多学习多分享,在此也欢迎大家指点和交流。一、国内AndroidApp漏洞检测

    2022年5月27日
    31
  • 51单片机抢答器程序_用keil编写4路抢答器程序

    51单片机抢答器程序_用keil编写4路抢答器程序基于AT89C51单片机的八路抢答器设计方案毕业设计(论文)-基于AT89C51单片机的八路抢答器设计图书分类号:密级:毕业论文基于AT89C51的八路抢答器设计OCTALANSWERDESIGNACCORDINGONAT89C51班级学号学生姓名学院名称信电学院专业名称电子信息工程技术指导教师2010年05月20日摘要本设计是以八路抢答为基本理念。考虑到依需…

    2022年10月20日
    2
  • 前端游戏巨制! CSS居然可以做3D游戏了

    前端游戏巨制! CSS居然可以做3D游戏了前言偶然接触到CSS的3D属性,就萌生了一种做3D游戏的想法.了解过css3D属性的同学应该都了解过perspective、perspective-origin、transform-st…

    2022年5月7日
    55
  • 借助Unity AR Foundation构建跨平台AR应用

    借助Unity AR Foundation构建跨平台AR应用

    2021年6月19日
    96

发表回复

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

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