@Override protected void showDialog(Bundle state) { List<Integer> indices = new ArrayList<>(); for (String s : getValues()) { int index = findIndexOfValue(s); if (index >= 0) indices.add(findIndexOfValue(s)); } MaterialDialog.Builder builder = new MaterialDialog.Builder(context) .title(getDialogTitle()) .icon(getDialogIcon()) .negativeText(getNegativeButtonText()) .positiveText(getPositiveButtonText()) .onAny( new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { switch (which) { default: MaterialMultiSelectListPreference.this.onClick( dialog, DialogInterface.BUTTON_POSITIVE); break; case NEUTRAL: MaterialMultiSelectListPreference.this.onClick( dialog, DialogInterface.BUTTON_NEUTRAL); break; case NEGATIVE: MaterialMultiSelectListPreference.this.onClick( dialog, DialogInterface.BUTTON_NEGATIVE); break; } } }) .items(getEntries()) .itemsCallbackMultiChoice( indices.toArray(new Integer[indices.size()]), new MaterialDialog.ListCallbackMultiChoice() { @Override public boolean onSelection( MaterialDialog dialog, Integer[] which, CharSequence[] text) { onClick(null, DialogInterface.BUTTON_POSITIVE); dialog.dismiss(); final Set<String> values = new HashSet<>(); for (int i : which) { values.add(getEntryValues()[i].toString()); } if (callChangeListener(values)) setValues(values); return true; } }) .dismissListener(this); final View contentView = onCreateDialogView(); if (contentView != null) { onBindDialogView(contentView); builder.customView(contentView, false); } else { builder.content(getDialogMessage()); } PrefUtil.registerOnActivityDestroyListener(this, this); mDialog = builder.build(); if (state != null) mDialog.onRestoreInstanceState(state); mDialog.show(); }
@Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); PrefUtil.unregisterOnActivityDestroyListener(this, this); }
private void init(Context context, AttributeSet attrs) { this.context = context; PrefUtil.setLayoutResource(context, this, attrs); if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1) setWidgetLayoutResource(0); }
private void init(Context context, AttributeSet attrs) { this.context = context; PrefUtil.setLayoutResource(context, this, attrs); }