我已经实施了自定义 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 {
}
我已经按照教程实现了这个类,它运行正常。但它使用了我认为的默认布局,如果我要添加此添加复选框,我将如何实现此目标?
更新
我想知道如何在布局中添加“全选”复选框?或者我应该创建自定义布局?请提供示例代码。 (因为我觉得它现在的方式,我没有控制这个复选框)
答案 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)