Tôi cần các mục động trong ListPreference nên tôi không thể sử dụng cách thiết lập XML thông thường trong đó có rất nhiều tài liệu trực tuyến. Cho đến nay tôi đã thiết lập sau đây như bạn có thể thấy dưới đây. Vấn đề là khi tôi chạy, tôi thấy hộp thoại có tiêu đề và tin nhắn nhưng không có mục nào được hiển thị mặc dù tôi biết rằng các mục và giá trị không trống (tôi biết rằng các mục nhập và giá trị của tôi giống nhau nhưng tôi sẽ gặp lỗi nếu tôi không mục đã cung cấp)Custom ListPreference với các mục nhập động
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);
}
}
Đây có phải là cách duy nhất để điền vào 'ListPreference' theo cách có lập trình? – enzom83
@ enzom83 đây là ý tưởng cơ bản về cách thực hiện. Tôi không tuyên bố là tốt nhất, nhưng như xa bạn có thể thấy không có bất kỳ bài viết nào khác liên quan đến nó. Bạn đang gặp một số vấn đề? –
@peter_budo: Không cần phải mở rộng ListPreference, nó là đủ để thiết lập một số giá trị ban đầu trong 'onCreate()' và sau đó ghi đè lên xử lý 'onPreferenceClick()' cho đối tượng cụ thể. Đây là một ví dụ: http://stackoverflow.com/questions/6474707/how-to-fill-listpreference-dynamically-when-onpreferenceclick-is-triggered – ccpizza