Cómo establecer el valor predeterminado de una ListPreference
i necesito establecer el valor predeterminado para una ListPreference cuando comience la Actividad. Lo he intentado conListPreference.setDefaultvalue("value");
pero hace que la primera entrada de la lista sea la predeterminada. Lo necesito porque debo verificar una condición y establecer por defecto el valor que satisface esa condición, por lo que creo que no se puede hacer desde el archivo xml (conandroid:defaultValue
)
Por ejemplo, supongamos que tengo esta matriz de valores en arrays.xml:
<string-array name="opts">
<item>red</item>
<item>green</item>
<item>blue</item>
</string-array>
<string-array name="opts_values">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
En el PreferenceScreen xml:
<ListPreference
android:title="Colour select"
android:summary="Select your favourite"
android:key="colour"
android:entries="@array/opts"
android:entryValues="@array/opts_values" />
En la actividad me gustaría hacer algo como esto:
String mycolour;
if (something) {
mycolour="1";
} else {
mycolour="2";
}
ListPreference colour = (ListPreference) findPreference ("colour");
colour.setDefaultValue(mycolour);
Pero no funciona, porque toma la primera opción por defecto. ¿Podría explicarme cómo hacer otro por defecto? Gracias