1

我已经实现了一个自定义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 {
}

我已经按照教程实现了该课程,并且效果很好。但它使用我认为的默认布局,如果我要添加这个附加复选框,我将如何实现这一点?

更新:

我想知道如何将“全选”复选框添加到布局中?或者我应该创建一个自定义布局?请提供示例代码。(因为我现在有这种感觉,所以我无法控制这个复选框)

4

2 回答 2

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
    }
}

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

于 2013-10-25T13:28:31.407 回答
0

找到了一个stackoverflow 帖子,如果他们遇到这种实现,它可能会对其他人有所帮助:

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

干杯!

于 2013-11-05T08:17:48.137 回答