Multi select ListPreference на Android - PullRequest
       57

Multi select ListPreference на Android

9 голосов
/ 29 августа 2010

Есть идеи по реализации множественного выбора (флажки) ListPreference на Android?

Должен ли я расширить ListPreference?
Есть ли уже документированные классы для этого?

Спасибо

Ответы [ 5 ]

21 голосов
/ 23 февраля 2011

Функция множественного выбора ListPreference теперь поставляется изначально с Android уровня API 11 (Honeycomb). http://developer.android.com/reference/android/preference/MultiSelectListPreference.html

Поскольку пройдет довольно много времени, прежде чем на устройствах будут установлены Honeycomb или более поздние версии, я бы порекомендовал людям придерживаться решения http://blog.350nice.com/wp/archives/240.

РЕДАКТИРОВАТЬ: я думаю, что в данный момент (почти через 3 года после того, как этот ответ был первоначально опубликован), вам лучше использовать нативную версию, так как большинство устройств имеют Android 4 и выше.

10 голосов
/ 22 ноября 2011

Что ж, http://blog.350nice.com/wp/archives/240 действительно предоставляет решение, но более простым решением было бы просто реализовать дочерний экран предпочтений внутри родительского элемента, и тогда экран дочерних предпочтений может иметь несколько флажков.Я знаю, это не лучшее решение, но выполняет свою работу.

Например, ниже - preference.xml

<PreferenceCategory 
    android:title="Regular messages"
    android:key="regular_messages">

    <CheckBoxPreference 
        android:key="enable_regular_messages"
        android:summary="Enable or disable regular messages"
        android:title="Send regular messages" 
        android:defaultValue="true"
    />

    <ListPreference 
        android:key="send_interval"
        android:title="Send interval"
        android:summary="Define how often you want to send messages"
        android:defaultValue="60000" 
        android:entries="@array/send_interval"
        android:entryValues="@array/send_interval_values"
        android:dependency="enable_regular_messages"
    />

 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
     android:title="Messages type"
     android:key="messages_type"
     android:summary="Select the type of messages to be sent"
     android:dependency="enable_regular_messages">
    <CheckBoxPreference 
        android:key="enable_status_messages"
        android:summary="Enable or disable status messages"
        android:title="Send status messages" 
        android:defaultValue="true"
    />

    <CheckBoxPreference 
        android:key="enable_event_messages"
        android:summary="Enable or disable event messages"
        android:title="Send event messages" 
        android:defaultValue="true"
    />

    <CheckBoxPreference 
        android:key="enable_critical_messages"
        android:summary="Enable or  disable critical messages"
        android:title="Send critical messages" 
        android:defaultValue="true"
    />

    </PreferenceScreen>

</PreferenceCategory>

8 голосов
/ 29 августа 2010

Нашел очень полезную ссылку: http://blog.350nice.com/wp/archives/240

4 голосов
/ 05 мая 2012

Вот реализация для одного класса с поддержкой defaultValue:
https://github.com/yanchenko/droidparts/blob/develop/droidparts/src/org/droidparts/widget/MultiSelectListPreference.java

1 голос
/ 17 июня 2013

Существует проект github только для этого

...