下面列出了android.app.AlertDialog.Builder#setMultiChoiceItems ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
protected void onPrepareDialogBuilder(Builder builder) {
super.onPrepareDialogBuilder(builder);
if (mEntries == null || mEntryValues == null) {
throw new IllegalStateException(
"MultiSelectListPreference requires an entries array and " +
"an entryValues array.");
}
boolean[] checkedItems = getSelectedItems();
builder.setMultiChoiceItems(mEntries, checkedItems,
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
mPreferenceChanged |= mNewValues.add(mEntryValues[which].toString());
} else {
mPreferenceChanged |= mNewValues.remove(mEntryValues[which].toString());
}
}
});
mNewValues.clear();
mNewValues.addAll(mValues);
}
@Override
protected void onPrepareDialogBuilder(Builder builder) {
super.onPrepareDialogBuilder(builder);
if (mEntries == null || mEntryValues == null) {
throw new IllegalStateException(
"ListPreference requires an entries array and an entryValues array.");
}
mOrigValues = Arrays.copyOf(mSetValues, mSetValues.length);
builder.setMultiChoiceItems(mEntries, mSetValues,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
mSetValues[which] = isChecked;
}
});
}
@Override
protected void onPrepareDialogBuilder(Builder builder) {
super.onPrepareDialogBuilder(builder);
if (mEntries == null || mEntryValues == null) {
throw new IllegalStateException(
"MultiSelectListPreference requires an entries array and "
+ "an entryValues array.");
}
if (mNewValues == null) {
mNewValues = new HashSet<>();
mNewValues.addAll(mValues);
mPreferenceChanged = false;
}
final boolean[] checkedItems = getSelectedItems(mNewValues);
builder.setMultiChoiceItems(mEntries, checkedItems,
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
if (isChecked) {
mPreferenceChanged |= mNewValues
.add(mEntryValues[which].toString());
} else {
mPreferenceChanged |= mNewValues
.remove(mEntryValues[which].toString());
}
}
});
}
@Override
protected void onPrepareDialogBuilder(Builder builder) {
// convert comma-separated list to boolean array
String value = getValue();
Set<String> commaSeparated = new HashSet<>(Arrays.asList(StringUtil.split(value, DELIMITER)));
CharSequence[] entryValues = getEntryValues();
final boolean[] checked = new boolean[entryValues.length];
for (int i = 0; i < entryValues.length; i++) {
checked[i] = commaSeparated.contains(entryValues[i]);
}
builder.setMultiChoiceItems(getEntries(), checked, (dialog, which, isChecked) -> checked[which] = isChecked);
builder.setPositiveButton(android.R.string.ok, (dialog, which) -> {
checkedDialogEntryIndexes = checked;
/*
* Clicking on an item simulates the positive button
* click, and dismisses the dialog.
*/
MultipleChoicePreference.this.onClick(dialog, DialogInterface.BUTTON_POSITIVE);
dialog.dismiss();
});
}
@Override
protected void onPrepareDialogBuilder(Builder builder) {
builder.setMultiChoiceItems(getEntries(), checkedEntryIndexes,
new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
checkedEntryIndexes[which] = isChecked;
}
});
}
@Override
protected void onPrepareDialogBuilder(final Builder builder) {
if (m) {
builder.setMultiChoiceItems(getEntries(), checked,
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(final DialogInterface dialog, final int which,
final boolean val) {
CVListPreference.this.checked[which] = val;
}
});
} else {
super.onPrepareDialogBuilder(builder);
}
}