我需要ListPreference中的动态条目,所以我不能使用其中有大量在线材料的XML设置的传统方式。到目前为止,我已经进行了以下设置,如下图所示。问题是,当我运行这个时,我看到标题和消息对话框,但没有条目显示,即使我知道条目和值不是空的(我知道我的条目和值是相同的,但如果我没有,我会得到错误提供的条目)带动态条目的自定义ListPreference
my.preference.DynamicPreference
android:title="@string/date_format"
android:dialogMessage="@string/profile_info_date_format"
android:entryValues="@array/date_format_values"
android:entries="@array/date_format_values"
public class DynamicPreference extends ListPreference {
private int index;
public DynamicPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public DynamicPreference(Context context) {
super(context);
}
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
builder.setTitle(getTitle());
builder.setMessage(getDialogMessage());
builder.setSingleChoiceItems(entries(), -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
super.onPrepareDialogBuilder(builder);
}
@Override
public void setEntries(CharSequence[] sequence) {
CharSequence[] entries = listObjects().toArray(new CharSequence[listObjects().size()]);
super.setEntries(entries);
}
@Override
public void setEntryValues(CharSequence[] sequence) {
CharSequence[] values = getContext().getResources().getStringArray(R.string.date_format);
super.setEntryValues(values);
}
}
这是唯一的方法来填补'ListPreference'以编程方式? – enzom83 2012-04-24 22:17:54
@ enzom83这是基本的想法如何去做。我并不认为自己是最好的,但就目前而言,你可以看到没有任何其他职位关于它。你有问题吗? – 2012-04-26 11:39:48
@peter_budo:不需要扩展ListPreference,只需在'onCreate()'中设置一些初始值就可以了,然后重写特定对象的'onPreferenceClick()'处理程序。下面是一个例子:http://stackoverflow.com/questions/6474707/how-to-fill-listpreference-dynamically-when-onpreferenceclick-is-triggered – ccpizza 2012-12-11 22:07:19