创建一个多选项列表对话框,只要创建AlerDialog.Builder对象,调用的setMultiChoiceItems()方法即可,该方法接收3个 参数,第一个作为列表选项,传入字符串数组,第二个传入boolean数组,设置初始化时选择哪些列表项,第三个是DialogInterface.OnMultiChoiceClickListener()接口的回调对象,监听列表项被选择或者被撤销选择的事件。
实现DialogInterface.OnMultiChoiceClickListener()接口时要重写其中onClick()方法,该方法拥有三个参数。第一个参数DialogInterface的对象,是做出选择的对话框的对象(The dialog where the selection was made)。第二个参数int which,被点击的列表项的位置(The position of theitem in the list that was clicked)。第三个参数booleanisChecke,表示该列表项是否被选择(True if the click checked theitem, else false)。
为了获取对话框选择的结果,最好在onClick()方法中,将选择的结果记录在setMultiChoiceItems()方法的第二个参数boolean数组中。
实例如下:
private void multiChoiceDialog(final String[] res, final boolean[]choice) { AlertDialog.Builder builder=new AlertDialog.Builder(this); builder.setTitle("多列表选项对话框") .setIcon(R.drawable.tools) //res为提供选项的数组 //choice为选择的初值 //通过OnMultiChoiceClickListener监听用户的选择 //用户的选择改变choice的值,将选择的结果返回给调用 .setMultiChoiceItems(res, choice, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { choice[which]=isChecked; } } ) .setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String str=""; for(int i=0;i<choice.length;i++) { if(choice[i]) { str+=res[i]+"\n"; } } str+="被选中"; Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show(); } }); builder.create().show(); }调用该方法,传入选项res,传入初值和记录选择结果的字符串choice即可打开对话框,并获取选择结果。