10

关于在 Android 上实现多选(复选框)ListPreference 的任何想法?

我必须扩展 ListPreference 吗?
是否有任何课程已经记录在案?

谢谢

4

5 回答 5

21

多选 ListPreference 现在从 API 级别 11 (Honeycomb) 原生地与 Android 一起提供。 http://developer.android.com/reference/android/preference/MultiSelectListPreference.html

因为在设备安装 Honeycomb 或更高版本之前需要很长时间,我建议人们坚持使用 http://blog.350nice.com/wp/archives/240解决方案。

编辑:我认为此时此刻(最初发布此答案大约 3 年后)您最好现在使用本机版本,因为大多数设备都具有 Android 4 及更高版本。

于 2011-02-23T13:39:58.533 回答
10

嗯,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>

于 2011-11-21T23:34:07.503 回答
8

找到一个非常有用的链接: http ://blog.350nice.com/wp/archives/240

于 2010-08-29T01:53:36.247 回答
4

这是一个支持的单类实现defaultValue
https ://github.com/yanchenko/droidparts/blob/develop/droidparts/src/org/droidparts/widget/MultiSelectListPreference.java

于 2012-05-05T19:29:53.293 回答
1

有一个github 项目就是为了这个

于 2013-06-17T08:54:13.407 回答