Ho bisogno di voci dinamiche in ListPreference, quindi non posso usare il metodo convenzionale di configurazione XML di cui ci sono tonnellate di materiali online. Finora ho seguito la configurazione come puoi vedere qui sotto. Il problema è che quando eseguo questo vedo la finestra di dialogo con il titolo e il messaggio ma non vengono mostrate le voci anche se so che le voci e i valori non sono vuoti (so che le mie voci e valori sono gli stessi ma otterrei un errore se non lo facessi voci in dotazione)Elenco personalizzato Riferimento con voci dinamiche
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);
}
}
È questo l'unico modo per riempire il 'ListPreference' in modo programmatico? – enzom83
@ enzom83 questa è l'idea di base su come farlo. Non pretendo di essere il migliore, ma per quanto tu possa vedere non ci sono stati altri post in merito. Stai avendo dei problemi? –
@peter_budo: Non è necessario estendere ListPreference, è sufficiente impostare alcuni valori iniziali in 'onCreate()' e quindi sovrascrivere il gestore 'onPreferenceClick()' per l'oggetto specifico. Ecco un esempio: http://stackoverflow.com/questions/6474707/how-to-fill-listpreference-dynamically-when-onpreferenceclick-is-triggered – ccpizza