Android 动态创建CheckBoxPreferences
我目前正在使用web服务中的内容动态地构建一个带有复选框的行列表。然而,这个Android 动态创建CheckBoxPreferences,android,dynamic,preferenceactivity,checkboxpreference,Android,Dynamic,Preferenceactivity,Checkboxpreference,我目前正在使用web服务中的内容动态地构建一个带有复选框的行列表。然而,这个ListView将需要完成PreferenceActivity所要完成的工作 我不知道行数,因为内容是动态的,所以我无法在XML中创建每个CheckBoxPreference。我如何构建一个首选项活动,它将动态显示带有复选框首选项的未知数字行?为此,您需要一个列表视图,一个首选项活动。如中所述,PreferenceActivity应仅用于实际保存首选项 相反,您可以创建一个带有单选或多选选项的简单对话框: 或者使用Li
ListView
将需要完成PreferenceActivity
所要完成的工作
我不知道行数,因为内容是动态的,所以我无法在XML中创建每个
CheckBoxPreference
。我如何构建一个首选项活动
,它将动态显示带有复选框首选项的未知数字行?为此,您需要一个列表视图
,一个首选项活动
。如中所述,PreferenceActivity
应仅用于实际保存首选项
相反,您可以创建一个带有单选或多选选项的简单对话框:
或者使用ListView
,就像谷歌提供的API示例一样,他们给出了一个简单的示例:
我想你在寻找这样的东西:
public class MyPreferenceActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.my_preference_activity);
//fetch the item where you wish to insert the CheckBoxPreference, in this case a PreferenceCategory with key "targetCategory"
PreferenceCategory targetCategory = (PreferenceCategory)findPreference("targetCategory");
//create one check box for each setting you need
CheckBoxPreference checkBoxPreference = new CheckBoxPreference(this);
//make sure each key is unique
checkBoxPreference.setKey("keyName");
checkBoxPreference.setChecked(true);
targetCategory.addPreference(checkBoxPreference);
}
}
嗯@Jodes,实际上你们两个都是对的,但正确的方法是使用
我会使用一个完整的编程方法,从我的经验来看,更容易保持一致;或者通过代码创建一个完整的XML布局,或者通过XML创建一个完整的XML布局,但是混合使用这两种布局可能会很奇怪,并且您无法通过XML更改所有设置
onCreate(){
this.setPreferenceScreen(createPreferenceHierarchy());
}
public PreferenceScreen createPreferenceHierarchy(){
PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);
// category 1 created programmatically
PreferenceCategory cat1 = new PreferenceCategory(this);
cat1.setTitle("title");
root.addPreference(cat1);
ListPreference list1 = new ListPreference(this);
list1.setTitle(getResources().getString(R.string.some_string_title));
list1.setSummary(getResources().getString(R.string.some_string_text));
list1.setDialogTitle(getResources().getString(R.string.some_string_pick_title));
list1.setKey("your_key");
CharSequence[] entries = calendars.getCalenders(); //or anything else that returns the right data
list1.setEntries(entries);
int length = entries.length;
CharSequence[] values = new CharSequence[length];
for (int i=0; i<length; i++){
CharSequence val = ""+i+1+"";
values[i] = val;
}
list1.setEntryValues(values);
cat1.addPreference(list1);
return root;
}//end method
onCreate(){
这个.setPreferenceScreen(createPreferenceHierarchy());
}
公共首选项屏幕createPreferenceHierarchy(){
PreferenceScreen root=getPreferenceManager().createPreferenceScreen(此);
//类别1以编程方式创建
PreferenceCategory cat1=新的PreferenceCategory(本);
第1类:设定所有权(“所有权”);
根。addPreference(cat1);
ListPreference list1=新的ListPreference(此);
list1.setTitle(getResources().getString(R.string.some_string_title));
list1.setSummary(getResources().getString(R.string.some_string_text));
list1.setDialogTitle(getResources().getString(R.string.some_string_pick_title));
列表1.设置键(“您的_键”);
CharSequence[]entries=calendars.GetCalendars();//或返回正确数据的任何其他内容
列表1.设置条目(条目);
int length=entries.length;
CharSequence[]值=新的CharSequence[length];
对于(int i=0;i使用Preference Compat库中的Preference FragmentCompat
编译'com.android.support:preference-v7:23.4.0'
查看本文以了解实施细节感谢您的快速响应。此列表用于保存首选项。此列表中的项目是应用程序内容的筛选器设置,这些筛选器是从web服务中提取的。不管此应用程序如何工作,我只需要知道如何正确构建动态预处理ReferenceActivity以编程方式在每一行中使用CheckBoxPreferences。这听起来像是在使用我知道的ListView,但如果可以使用preferences来完成,这将节省我大量的时间,因为这正是它需要的功能。这就是方法。你刚刚让我度过了一整天。清楚答案,并通过使用Pref显示了更多带有列表的erenceCategory。谢谢!标题:checkBoxPreference.setTitle(“我的标题”);