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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【强化学习】Q-Learning算法详解

    【强化学习】Q-Learning算法详解QLearning是强化学习算法中值迭代的算法,Q即为Q(s,a)就是在某一时刻的s状态下(s∈S),采取a(a∈A)动作能够获得收益的期望,环境会根据agent的动作反馈相应的回报rewardr,所以算法的主要思想就是将State与Action构建成一张Q-table来存储Q值,然后根据Q值来选取动作获得较大的收益。

  • k8s 开源_jdk源码剖析手册

    k8s 开源_jdk源码剖析手册createfunc main() { #随机数 rand.Seed(time.Now().UnixNano()) #创建一个新的命令行对象 command := cmd.NewDefaultKubectlCommand() #日志 logs.InitLogs() defer logs.FlushLogs() #真正执行的命令行 if err := command.Execute(); err != nil { os.Exit(1) }}# NewDefaultKubectl

  • C++:set、map的使用及其特性和区别

    C++:set、map的使用及其特性和区别set、map的使用及其特性和区别STL总共实现了两种不同结构的管理式容器:树型结构与哈希结构。树型结构的关联式容器主要有四种:set,map,multiset,multimap。下面介绍一下这四种容器的简单使用。1.setset里面每个元素只存有一个key值,它支持高效的关键字查询操作,比如检查一个关键字是否在set中。如果这个key值之前存在的话就不插入。简单使用如下:插入:set…

  • DatagramSocket

    DatagramSockethttp://blog.csdn.net/jiangxinyu/article/details/8161044

  • leetcode 最长有效括号_字符指针赋值为什么不能加大括号

    leetcode 最长有效括号_字符指针赋值为什么不能加大括号给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = “(()”输出:2解释:最长有效括号子串是 “()”示例 2:输入:s = “)()())”输出:4解释:最长有效括号子串是 “()()”示例 3:输入:s = “”输出:0题解括号匹配:(看作+1,)看作-1,所有满足条件的括号应该是前缀和>=0,并且总和==0class Solution {public: const int INF =

  • RPC接口实现_一个接口多个实现

    RPC接口实现_一个接口多个实现1.RPC作用以目前的认识,RPC的作用:多个工程之间数据传输。2.逐步完成RPC接口实现第一步:编写thrift文件,语法格式和java不同。在布局分层里安排在了client层

    2022年10月13日

发表回复

您的电子邮箱地址不会被公开。

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