AlertDialog.BuilderはAlertController.AlertParamsを使用してダイアログを作成します。AlertDialog.Builder#create() は、項目が設定されている場合 ( AlertParams#createListView() )、ListView を作成してアダプターを割り当てる AlertController.AlertParams#apply() を呼び出すことを調べました。
createListView ソースに基づいてカスタム アダプターを作成し、Android セル レイアウトを変更しました。
public static class TypefaceDialog extends DialogFragment {
private static final CharSequence[] items = {
"A", "B", "C", "D", "E", "F", "G"
};
private static final boolean[] checked = {
true, false, false, true, true, false, false
};
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Typeface fontTypeface = Typeface.createFromAsset(getActivity().getAssets(), "Arial Bold.ttf");
ListAdapter adapter = new ArrayAdapter<CharSequence>(
getActivity(),
android.R.layout.select_dialog_multichoice,
android.R.id.text1,
items) {
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
CheckedTextView textView = (CheckedTextView)view.findViewById(android.R.id.text1);
textView.setChecked(checked[position]);
textView.setTypeface(fontTypeface);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckedTextView view = (CheckedTextView)v;
view.setChecked(!view.isChecked());
checked[position] = view.isChecked();
}
});
return view;
}
};
return new AlertDialog.Builder(getActivity())
.setAdapter(adapter, null)
.setPositiveButton("OK", null)
.create();
}
}