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


相关推荐

  • 强制升级openssl导致无法使用SSH(生成ssh公钥)

    最近由于工作需求要搭建freeswitch,整个过程比较纠结,遂总结于此留作备忘。起源由于我的需求是将freeswitch跑起来,所以先按照freeswitchwiki上的介绍编译freeswitch,但configure过程便遇到问题:configure:error:OpenSSL>=1.0.1eandassociateddevelopementheadersrequi…

    2022年4月15日
    73
  • mysql 批量查询插入,MySQL批量插入查询出来的数据

    mysql 批量查询插入,MySQL批量插入查询出来的数据timg.jpg先看SQL:INSERTINTO`movie_detail_tab`(VIDEO_ID,PLAY_URL)SELECTb.IDASVIDEO_ID,x.playurlASPLAY_URLFROM(SELECTa.playurl,CONCAT(a.`卡通名`,a.`第几集`)AS’videoCname’FROM(SELECTplayurl,SUBSTRING_I…

    2022年10月5日
    3
  • 简述Python垃圾回收机制「建议收藏」

    简述Python垃圾回收机制「建议收藏」引言许多高级语言都具有自己的垃圾回收机制,以管理计算机内存,Python也不例外。对于垃圾回收机制的了解程度,成了开发人员是否真正了解Python的检验手段,在面试的时候许多面试官也喜欢以此作为题目考察面试者Garbagecollection(GC)概述现在的高级语言如java,c#等,都采用了垃圾回收机制,而不再是c,c++里用户自己管理维护内存的方式。自己管理内存极其自由,可…

    2022年6月15日
    26
  • SilverLight浏览器支持情况

    SilverLight浏览器支持情况推荐使用IE、360浏览器,搜狗、QQ浏览器需切换到兼容模式。以下浏览器版本不再支持:Chrome45及以后版本、Firefox52及以后版本、MicrosoftEdge浏览器、Opera浏览器。…

    2022年7月17日
    33
  • eclipse集成svn使用_svn常用命令

    eclipse集成svn使用_svn常用命令在新版本的Eclipse中是没有svn这个插件,如果我们要用,不得不自己去集成SVN(我不知道老版当中有没有这个插件,没太注意这个问题),今天给大家带来2种集成的方式,一种是在线集成,另一种否是离线集成。这也是我目前知道的2种方案,我也不清楚还有没有其它方案。1.在线集成:Name:这个可以任意添,没有硬性规定,最好见名知意。Location:http://subclipse.tigris.org…

    2022年9月26日
    3
  • zoj 3822 Domination (可能性DP)

    zoj 3822 Domination (可能性DP)

    2021年12月17日
    38

发表回复

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

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