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

Respuestas a la pregunta(10)

Su respuesta a la pregunta