Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在ListPreference中自定义“全选”复选框_Android_Listpreference - Fatal编程技术网

Android 在ListPreference中自定义“全选”复选框

Android 在ListPreference中自定义“全选”复选框,android,listpreference,Android,Listpreference,我已经实现了一个自定义的ListPreference,并成功地加载了一个项目列表以及每个项目的复选框,而没有任何问题。但是,我需要在顶部添加一个“全选”复选框,以便选择所有项目列表。使用我已经实现的以下源代码,我将如何实现这一点 布局: <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory

我已经实现了一个自定义的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"
        />
我已经按照教程实现了这个类,效果很好。但我认为它使用了默认布局,如果我要添加这个添加复选框,我将如何实现这一点

更新:


我想知道如何将“全选”复选框添加到布局中?或者我应该创建一个自定义布局?请提供一个示例代码。因为我现在的感觉,我无法控制这个复选框,你可以做的是在你的首选项类别中添加一个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"
    />

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

您可以做的是在首选项类别中添加一个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"
    />
希望这有帮助,如果你遇到了障碍,我认为在解释一些概念方面会做得更好一些。祝你好运

发现了一个可能会帮助其他人(如果他们遇到这种实现):

您可以构建自定义ListPreference布局

干杯

发现了一个可能会帮助其他人(如果他们遇到这种实现):

您可以构建自定义ListPreference布局


干杯

我想我会在我的侦听器中检查列表中检查的项目的位置。如果为0,请选中/取消选中所有复选框。如果您知道列表的长度,您可能会在SharedReferences中保存每个列表的状态。因此,当您选中全选时,启动一个将在列表中运行的方法,通过您为首选项指定的唯一键获取每个项,然后将新状态设置为SharedReferences和该项。实际上,我想知道如何从支出的角度添加“全选”复选框?我想我会在侦听器中检查列表中选中的项的位置。如果为0,请选中/取消选中所有复选框。如果您知道列表的长度,您可能会在SharedReferences中保存每个列表的状态。因此,当您选中全选时,启动一个方法,该方法将在列表中运行,通过您给首选项的唯一键获取每个项目,然后将新状态设置到SharedReferences和项目中。实际上,我想知道如何从付款的角度添加全选复选框?非常感谢。但是我想要的是对话框或弹出窗口中包含的复选框,而不是加载项目的位置。例如,当我单击LocationsListReference列表首选项时,复选框应与项目列表一起位于其中。非常感谢。但是我想要的是对话框或弹出窗口中包含的复选框,而不是加载项目的位置。例如,当我单击LocationsListReference列表首选项时,所有选择复选框应与项目列表一起位于其中。
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
    }
}