我们如何动态填充PreferenceScreen(来自JAVA)。
我有一个字符串数组。我希望所有项目都显示在带有复选框的第二个偏好设置屏幕中。
目前我在preferences.xml中的字符串数组中的每个项目都有
CheckBoxPreference个标签。
有关如何做到这一点的任何想法。
答案 0 :(得分:-1)
以下代码解释了以您的方式动态实现PreferenceActivity。编辑。
public class DynamicPreference extends PreferenceActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
ListView listView = new ListView(this);
listView.setId(android.R.id.list);
listView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT, 1));
layout.addView(listView);
this.setContentView(layout);
Preference test1=getPrefereces("key1","Header Preference #1","Summary1",null);
Preference test2=getPrefereces("key2","Header Preference #2","Summary2",null);
PreferenceScreen prefScreen=this.getPreferenceManager().createPreferenceScreen(this);
addPreferenceCategory(prefScreen,"Category",test1,test2);
//addPreferenceCategory(prefScreen,"",test2);
this.setPreferenceScreen(prefScreen);
//add Intent to preferences
Preference prefereces=findPreference("key");
prefereces.setIntent(new Intent(getApplicationContext(), Nextactivity.class));
}
private boolean addPreferenceCategory(PreferenceScreen prefScreen,
String titleCategory, Preference... preferences) {
boolean addPreference = false;
for (Preference preference : preferences) {
if (preference != null)
addPreference = true;
}
if (addPreference) {
PreferenceCategory preferenceCategory = new PreferenceCategory(this);
preferenceCategory.setTitle(titleCategory);
prefScreen.addPreference(preferenceCategory);
for (Preference preference : preferences) {
if (preference != null)
preferenceCategory.addPreference(preference);
}
return true;
} else
return false;
}
private Preference getPrefereces(String key,String title, String summary,
Intent intent) {
// TODO Auto-generated method stub
Preference pref=new Preference(this);
pref.setTitle(title);
pref.setSummary(summary);
if(key!=null)
{
pref.setKey(key);
}
if(intent!=null)
{
pref.setIntent(intent);
}
return pref;
}
}