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


    因为实习项目中涉及到类似于时钟设置闹钟反复时间的原因须要使用对话框的方式呈现。因为DialogFragment眼下还没实验出嵌套Fragment的方法。所以临时先用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的朋友有所帮助~

  • 相关阅读:
    遇到的StageFright问题 一 音视频因ALSA不同步
    stagefright
    细数开源历史上的九个重大事件
    AOP concepts (from spring.net document)
    javascript ECMA262概述
    Spring.net配置相关
    NUnit2.5 测试类几个方法
    Bill Gates 哈佛大学演讲 Never Surrend to Complexity
    iis6.0支持GZIP的详细设置方法
    Hessian是一个轻量级的remoting onhttp工具
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5212040.html
Copyright © 2020-2023  润新知