AlertDialog.Builder中的setMultiChoiceItems中的事件处理
因为实习项目中涉及到类似于时钟设置闹钟反复时间的原因须要使用对话框的方式呈现。因为DialogFragment眼下还没实验出嵌套Fragment的方法。所以临时先用AlertDialog.Builder中的setMultiChoiceItems取代,因为网上搜索时都仅仅有显示的代码,没有关于点击事件进行操作的演示样例。所以依据项目自己整理了一下
效果图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXJEaW9yZG5h/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
逻辑:用户点击取消则销毁对话框,点击确定会将勾选的星期数存下来。下次再次点击的话之前选中的星期数会自己主动勾选上
控件.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的朋友有所帮助~
AlertDialog.Builder中的setMultiChoiceItems中的事件处理的更多相关文章
- 关于AlertDialog.Builder(Context context)中所应传入的context
错误报告: 10-20 14:34:46.565: E/AndroidRuntime(23098): FATAL EXCEPTION: main10-20 14:34:46.565: E/Androi ...
- Stack Overflow 排错翻译 - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder
Stack Overflow 排错翻译 - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder 转自:ht ...
- 如何获取一个AlertDialog中的EditText中输入的内容
怎么获取一个AlertDialog中的EditText中输入的内容? new AlertDialog.Builder(this) .setTitle("请输入") .set ...
- Builder模式在Java中的应用
在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成.那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Build ...
- Android零基础入门第34节:Android中基于监听的事件处理
原文:Android零基础入门第34节:Android中基于监听的事件处理 上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本 ...
- AlertDialog.Builder对话框类的用法
1.在测试时,如何实现一个提示 可以使用 Toast.makeText(this, "这是一个提示", Toast.LENGTH_SHORT).show(); //从资源文件str ...
- android AlertDialog.Builder
AlertDialog的构造方法全部是Protected的,所以不能直接通过new一个AlertDialog来创建出一个AlertDialog. 要创建一个AlertDialog,就要用到AlertD ...
- 对话框AlertDialog.Builder使用方法
我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等 ...
- Android详细的对话框AlertDialog.Builder使用方法
我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继 ...
随机推荐
- ID3决策树算法原理及C++实现(其中代码转自别人的博客)
分类是数据挖掘中十分重要的组成部分.分类作为一种无监督学习方式被广泛的使用. 之前关于"数据挖掘中十大经典算法"中,基于ID3核心思想的分类算法C4.5榜上有名.所以不难看出ID3 ...
- 全国计算机等级考试二级教程-C语言程序设计_第2章_C程序设计的初步知识
正负号与被除数一致. 3 % (-5) == 3 (-3) % 5 == -3 不用求余运算符,求出余数. int x, y; 答:x - x / y * y; const int i = 10; c ...
- CvMat、Mat、IplImage之间的转换详解及实例
见原博客:http://blog.sina.com.cn/s/blog_74a459380101obhm.html OpenCV学习之CvMat的用法详解及实例 CvMat是OpenCV比较基础的函数 ...
- 聚类算法初探(五)DBSCAN
最近由于工作需要,对聚类算法做了一些相关的调研.现将搜集到的资料和自己对算法的一些理解整理如下,供大家参考. 另外在算法代码方面,我也做了一些实现(包括串行和并行),欢迎感兴趣的朋友探讨和交流. 第一 ...
- hdu4135Co-prime 容斥原理水题
//问一个区间[a,b]与n互素的数的个数 //利用容斥原理可知 //在[a,b] 区间内对n的素数因子 //ans = 被一个数整除的数的个数 - 被两个数的最小公倍数整除的数的个数 + 被三个数的 ...
- 动态代理双剑客--JDK Proxy与CGLIB
背景: 研究过设计模式的同胞们都知道代理模式可以有两种实现方案: 1.接口实现(或继承抽象类) 核心代码片段 ProxySubject-->>doOperation() //dosomet ...
- DB2数据库常用基本操作命令
点击开始菜单-->所有程序-->IBM-->DB2-->DB2COPY1-->命令行工具-->命令窗口一.DB2实例操作1.查看DB2数据库的版本及安装目录 E:\ ...
- SecureCRT中文显示乱码的解决方法
注:本文出自:http://riching.iteye.com/blog/349754 最近开始用SecureCRT登陆linux系统,由于是新手,很多问题不清楚,碰到显示中文乱码的问题,困扰了好几天 ...
- 第003篇 深入体验C#项目开发(二)
下半本的5个项目也看完了,还是跳着看,只看大概! 第6章 企业交互系统 作者入职一年,开始带新的2个实习生的项目!一个外资企业内部的OA交互系统,这次又是一个基于w ...
- Android中view的事件
view:top.left.right.bottom,相对于parent的位置参数,获取通过get*()来获取.width=right-left.height=bottom-top.x=left+tr ...