您的位置:首页 > 产品设计 > UI/UE

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

2014-08-10 16:46 316 查看
因为实习项目中涉及到类似于时钟设置闹钟重复时间的原因需要使用对话框的方式呈现,由于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即确定按钮,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的朋友有所帮助~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐