मुझे ListPreference में गतिशील प्रविष्टियों की आवश्यकता है, इसलिए मैं XML सेटअप के पारंपरिक तरीके का उपयोग नहीं कर सकता जिसके बारे में बहुत सारी सामग्री ऑनलाइन है। अब तक मेरे पास निम्न सेटअप है क्योंकि आप देख सकते हैं। समस्या यह है कि जब मैं इसे चलाता हूं तो मुझे शीर्षक और संदेश के साथ संवाद दिखाई देता है लेकिन कोई प्रविष्टि दिखाई नहीं देती है, भले ही मुझे पता है कि प्रविष्टियां और मान खाली नहीं हैं (मुझे पता है कि मेरी प्रविष्टियां और मान समान हैं लेकिन अगर मैं नहीं करता तो मुझे त्रुटि मिल जाएगी आपूर्ति की प्रविष्टियों)डायनामिक प्रविष्टियों के साथ कस्टम सूची प्राथमिकता
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
@ enzom83 यह मूल विचार है कि इसे कैसे करें। मैं सबसे अच्छा होने का दावा नहीं करता हूं, लेकिन जहां तक आप देख सकते हैं कि इसके संबंध में कोई अन्य पोस्ट नहीं है। क्या आपको कुछ समस्याएं हैं? –
@peter_budo: ListPreference को बढ़ाने की कोई आवश्यकता नहीं है, कुछ प्रारंभिक मानों को 'onrereate()' में सेट करने के लिए पर्याप्त है और फिर विशिष्ट ऑब्जेक्ट के लिए 'onPreferenceClick()' हैंडलर को ओवरराइड करें। यहां एक उदाहरण दिया गया है: http://stackoverflow.com/questions/6474707/how-to-fill-listpreference- गतिशील रूप से- when-onpreferenceclick-is-triggered – ccpizza