ListPreference中的自定义“全选”复选框

时间:2013-10-23 11:49:43

标签: android listpreference

我已经实施了自定义 ListPreference ,并设法加载了一个项目列表以及每个项目的复选框,没有任何问题。但是,我需要在顶部添加“全选”复选框,以便选择所有项目列表。如何通过我实现的以下来源实现这一目标?

布局:

<PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory
            android:title="@string/Title_LOCATIONS">       

        <com.gm.settings.LocationsListPreference         
            android:defaultValue="null"
            android:key="list_locations"
            android:title="@string/LocationsListPreference_title" 
            android:dialogTitle="@string/LocationsListPreference_title"
            android:summary="@string/LocationsListPreference_summary"
        />

班级:

public class LocationsListPreference extends ListPreference {
}

我已经按照教程实现了这个类,它运行正常。但它使用了我认为的默认布局,如果我要添加此添加复选框,我将如何实现此目标?

更新

我想知道如何在布局中添加“全选”复选框?或者我应该创建自定义布局?请提供示例代码。 (因为我觉得它现在的方式,我没有控制这个复选框)

2 个答案:

答案 0 :(得分:1)

你可以做的是在你的PreferenceCategory中添加一个CheckBoxPreference并附加一个OnPreferenceChangedListener来设置要检查的所有值。

一个例子可能看起来像这样:

    <CheckBoxPreference
        android:key="select_all"
        android:defaultValue="false"
        android:title="Select All"
    />


    <com.gm.settings.LocationsListPreference         
        android:defaultValue="null"
        android:key="list_locations"
        android:title="@string/LocationsListPreference_title" 
        android:dialogTitle="@string/LocationsListPreference_title"
        android:summary="@string/LocationsListPreference_summary"
    />

然后在PreferenceFragment(或PreferenceActivity)中,您将拥有以下内容:

SharedPreferences shareprefs = getPreferenceManager().getSharedPreferences();
LocationsListPreference listPreference = getPreference("list_locations");
CheckBoxPreference selectAll = getPreference("select_all");

selectAll.setOnPreferenceChangeListener(new OnPreferenceChangeListener()
{
    public boolean onPreferenceChanged(Preference preference, Object newValue) 
    {
        //Do something with your listPreference and/or your sharedPrefs
    }
}

希望这会有所帮助,如果你遇到障碍,我认为this post在解释一些概念方面做得稍微好一些。祝你好运!

答案 1 :(得分:0)

找到stackoverflow post,如果遇到这种情况,可能会对其他人有所帮助:

您可以构建自定义ListPreference布局。

干杯!