我正在使用apidemos中的以下代码..
return new AlertDialog.Builder(AlertDialogSamples.this)
.setIcon(R.drawable.ic_popup_reminder)
.setTitle(R.string.alert_dialog_multi_choice)
.setMultiChoiceItems(R.array.select_dialog_items3,
new boolean[]{false, true, false, true, false, false, false},
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog, int whichButton,
boolean isChecked) {
/* User clicked on a check box do some stuff */
}
})
.setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked Yes so do some stuff */
}
})
.setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked No so do some stuff */
}
})
.create();
在/* User clicked Yes so do some stuff */
下,我没有输入isChecked变量..但是,我在/* User clicked on a check box do some stuff */
部分给出了isChecked ..显然我不想在复选框点击时更新我的SharedPrefs,如果用户点击取消..
那么如何获取setPositiveButton
onClick?
感谢。
答案 0 :(得分:5)
使用AlertDialog类的getListView()。并获取listView。 即当你最后调用.create()时,这将获取一个新的AlertDialog。
然后使用以下方法之一:
1. getCheckItemPositions:SparseBooleanArray
2. getCheckedItemIds:long[]
我可以为您提供演示代码。给我10-15分钟。
答案 1 :(得分:3)
在byte[]
中传递对setMultiChoiceItems()
的引用。
final boolean[] booleans = {false, true, false, true, false, false, false};
然后检查booleans
内的setPositiveButton()
的值。
如果您需要传递此AlertDialog
,请展开AlertDialog
并创建一个字段boolean
,如1所述。
答案 2 :(得分:0)
要在AlertDialog.Builder中使用setMultiChoiceItems时获取已检查项目, 你必须创建DialogInterface.OnMultiChoiceClickListener,甚至是空的onClick。 只有在这种情况下,在第二个参数中的checkedItem将在AlertController内部使用和更新,并在退出时反映检查的项目(即在setPositiveButton回调中)
检查此AlertController代码:
...
} else if (mOnCheckboxClickListener != null) {
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
if (mCheckedItems != null) {
mCheckedItems[position] = listView.isItemChecked(position);
}
mOnCheckboxClickListener.onClick(
dialog.mDialogInterface, position, listView.isItemChecked(position));
}
});
}
...