Necesito entradas dinámicas en ListPreference, así que no puedo usar la forma convencional de configuración XML de la que hay toneladas de materiales en línea. Hasta ahora tengo la siguiente configuración como puedes ver a continuación. El problema es que cuando ejecuto esto veo el diálogo con el título y el mensaje, pero no se muestran las entradas, aunque sé que las entradas y los valores no están vacíos (sé que mis entradas y valores son los mismos, pero obtendría un error si no lo hiciera entradas suministrado)Lista personalizadaPreferencia con entradas dinámicas
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);
}
}
¿Es esta la única manera de llenar el 'ListPreference' de forma programática? – enzom83
@ enzom83 esta es una idea básica de cómo hacerlo. No pretendo ser el mejor, pero hasta ahora puede ver que no ha habido otros mensajes al respecto. ¿Estás teniendo problemas? –
@peter_budo: no es necesario extender ListPreference, es suficiente establecer algunos valores iniciales en 'onCreate()' y luego anular el manejador 'onPreferenceClick()' para el objeto específico. Aquí hay un ejemplo: http://stackoverflow.com/questions/6474707/how-to-fill-listpreference-dynamically-when-onpreferenceclick-is-triggered – ccpizza