AlertDialog.Builder中的setMultiChoiceItems中的事件处理
2014-08-10 16:46
316 查看
因为实习项目中涉及到类似于时钟设置闹钟重复时间的原因需要使用对话框的方式呈现,由于DialogFragment目前还没实验出嵌套Fragment的方法,所以暂时先用AlertDialog.Builder中的setMultiChoiceItems代替,由于网上搜索时都只有显示的代码,没有关于点击事件进行操作的示例,所以根据项目自己整理了一下
效果图:
![](http://img.blog.csdn.net/20140716132811662?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXJEaW9yZG5h/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
逻辑:用户点击取消则销毁对话框,点击确定会将勾选的星期数存下来,下次再次点击的话之前选中的星期数会自动勾选上
控件.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即确定按钮,negativeButton为取消按钮
new DialogInterface.OnClickListener() {//此对确定按钮的点击事件进行设置于处理
@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的朋友有所帮助~
效果图:
逻辑:用户点击取消则销毁对话框,点击确定会将勾选的星期数存下来,下次再次点击的话之前选中的星期数会自动勾选上
控件.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即确定按钮,negativeButton为取消按钮
new DialogInterface.OnClickListener() {//此对确定按钮的点击事件进行设置于处理
@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中的事件处理
- Android AlertDialog 设置setMultiChoiceItems(多选列表)
- AlertDialog.setSingleChoiceItems 单选dialog框在阿拉伯语下图标还是在最右边如何解决
- AlertDialog.setSingleChoiceItems 单选dialog框在阿拉伯语下图标还是在最右边如何解决
- Android AlertDialog 设置setSingleChoiceItems(单选列表)
- Android AlertDialog 设置setSingleChoiceItems不显示列表的原因【setMessage和setSingleChoiceItems不能同时使用】
- Dialog中的单选事件setSingleChoiceItems
- The method setPositiveButton(int, DialogInterface.OnClickListener) in the type AlertDialog.Builder i
- android 显示单选列表对话框 builder.setSingleChoiceItems
- android 展示单选列表对话框 builder.setSingleChoiceItems
- The method setPositiveButton(int, DialogInterface.OnClickListener) in the type AlertDialog.Builder is not applicable for the arguments
- Dialog的使用(二):AlertDialog.setItems
- The method setPositiveButton(int, DialogInterface.OnClickListener) in the type AlertDialog.Builder i
- AlertDialog.Builder.setCancelable(false)无效
- AlertDialog.Builder setCancelable用法
- The method setPositiveButton(int, DialogInterface.OnClickListener) in the type AlertDialog.Builder i
- The method setPositiveButton(int, DialogInterface.OnClickListener) in the type AlertDialog.Builder i
- 【Exception】 java.lang.NoSuchMethodError: android.app.AlertDialog$Builder.setOnDismissListener
- AlertDialog.Builder 事件监听
- android对话框之AlertDialog.Builder类的setSingleChoiceItems