Как сделать ListPreference с флажком

Как создать ListPreference с помощью checkbox? Я знаю, как использовать ListPreference, но мне нужно многократное выделение, например, в приложении Alarm при предпочтении "повторить".

как этот снимок экрана:

checkboxes

Ответы

Ответ 1

Так как API 11 вы можете использовать MultiSelectListPreference

String[] selections = {"selection1","Selection2"};
Set<String> selectionSet = new HashSet<String>();
selectionSet.addAll(Arrays.asList(selections));

MultiSelectListPreference multiSelectPref = new MultiSelectListPreference(this);
        multiSelectPref.setKey("multi_pref");
        multiSelectPref.setTitle("Multi Select List  Preference");
        multiSelectPref.setEntries(selections);
        multiSelectPref.setEntryValues(selections);
        multiSelectPref.setDefaultValue(selectionSet);
        getPreferenceScreen().addPreference(multiSelectPref);

Ответ 2

Для AFAIK нет встроенного предпочтения. ListPreference только для одного выбора.

Вы можете создать свой собственный Preference класс, расширяя DialogPreference.

Ответ 3

Для булевых значений вы должны использовать SwitchPreference, как показано ниже:

  <SwitchPreference
        android:defaultValue="true"
        android:key="example_switch"
        android:summary="@string/pref_description_social_recommendations"
        android:title="@string/pref_title_social_recommendations" />

Ответ 4

Использовать MultiSelectListPreference

<MultiSelectListPreference
        app:defaultValue="@array/watermark_entries_view"
        app:dialogTitle="Select Watermark Type"
        app:entries="@array/watermark_entries_view"
        app:entryValues="@array/watermark_entries_values"
        app:key="mode_repeat"
        app:summary="Enable Watermark"
        app:title="Watermark" />