我需要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