package com.byagowi.persiancalendar.view.preferences; import android.content.DialogInterface; import android.os.Build; import android.support.v7.app.AlertDialog; import android.support.v7.preference.PreferenceDialogFragmentCompat; import com.byagowi.persiancalendar.R; import com.byagowi.persiancalendar.adapter.ShapedArrayAdapter; import java.util.Arrays; /** * Created by ebraminio on 2/21/16. */ public class ShapedListDialog extends PreferenceDialogFragmentCompat { @Override protected void onPrepareDialogBuilder(AlertDialog.Builder builder) { super.onPrepareDialogBuilder(builder); final ShapedListPreference listPref = (ShapedListPreference) getPreference(); final CharSequence[] entriesValues = listPref.getEntryValues(); int selectDialogLayout = R.layout.select_dialog_singlechoice_material; // It is better to avoid compat's single choice layout on Android 4.2.2 as its special issue // with RTL on making two radio button on left and right of each select item if (Build.VERSION.SDK_INT == Build.VERSION_CODES.JELLY_BEAN_MR1) selectDialogLayout = android.R.layout.select_dialog_singlechoice; ShapedArrayAdapter<CharSequence> entriesAdapter = new ShapedArrayAdapter<>(getContext(), selectDialogLayout, listPref.getEntries()); int index = Arrays.asList(entriesValues).indexOf(listPref.getSelected()); builder.setSingleChoiceItems(entriesAdapter, index, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { listPref.setSelected(entriesValues[which].toString()); getDialog().dismiss(); } }); builder.setPositiveButton("", null); } @Override public void onDialogClosed(boolean b) { } }