可以通过AlertDialog的静态类Builder将对话框设置为单选对话框或者多选对话框,即在对话框中显示单选框或者多选框。
1 设置单选对话框
通过Builder类调用setSingleChoiceItems()方法设置单选对话框,如图1所示。
图1 setSingleChoiceItems()方法
从图1①,setSingleChoiceItems()方法的第一个参数cities是字符串数组,用来表示每个单选框的内容;第二个参数checkedItem是int类型,表示当显示这些对话框时,默认哪一个单选框被选中,如果checkedItem的值时-1,则表示默认所有的单选框都不会被选中,cities和checkedItem的定义如图2所示。
图2 cities和checkedItem的定义
setSingleChoiceItems()方法的第三个参数表示单选框的点击监听器,在图1①中可以看出,在此使用new关键字定义了DialogInterface.OnClickListener接口的匿名内部类,当用户点击了对话框中的某个单选框时,就会调用该类的onClick()方法。对于DialogInterface.OnClickListener接口的介绍,请参考《Android Studio中AlertDialog的使用方法4-3》。
Android Studio中AlertDialog的使用方法4-3_hou09tian的博客-CSDN博客
从图②中可以看到,DialogInterface.OnClickListener接口的onClick()方法的第一个参数表示包含单选框的对话框;第二个参数表示哪一个单选框被选中。
单选对话框的效果如图3所示。
图3 单选对话框
2 设置复选对话框
通过Builder类调用setMultiChoiceItems()方法设置单选对话框,如图4所示。
图4 setMultiChoiceItems()方法
从图4①中可以看出,setMultiChoiceItems()方法的一个参数表示对话框中每个复选框显示的内容;第二个参数是boolean类型的数组,指定了显示对话框时,默认哪些复选框被选中,cities和ischecked的定义如图5所示。
图5 cities和ischecked的定义
需要注意的是,ischecked数组中元素的个数必须与cities中元素的个数相同,此时表示“北京”和“重庆”两个复选框默认被选中。
setMultiChoiceItems()方法的第三个参数是DialogInterface.OnMultiChoiceClickListener类的对象,在此使用new关键字创建了一个匿名内部类。当复选框中的某项被选中或者取消选中后,就会调用onClick()方法(图②)。
从图2②中可以看到,onClick()方法的第一个参数表示包含复选框的对话框;第二个参数表示哪个复选框被选中或者取消选中;第三个参数表示是选中还是取消选中,如果是选中,isChecked的值是true,否则是false。
复选框对话框的效果如图6所示。
图6 复选框对话框。