he aprendido que cuando se utiliza con un android:entries
ListView
, utiliza android.R.layout.simple_list_item_1
como el diseño de un elemento de lista y android.R.id.text1
como el ID de la TextView dentro de esa disposición. Por favor corrígeme si estoy equivocado.Uso android.R.layout.simple_list_item_1 con un tema de la luz
Sabiendo esto, quería crear mi propio adaptador pero usar los mismos recursos de diseño, para proporcionar la consistencia de UI con la plataforma. Por lo tanto, he intentado lo siguiente:
mAdapter = new SimpleCursorAdapter(
getApplicationContext(),
android.R.layout.simple_list_item_1,
mSites,
new String[] { SitesDatabase.KEY_SITE },
new int[] { android.R.id.text1 }
);
Por desgracia, porque yo estoy usando un tema de la luz (no tengo en mi android:theme="@android:style/Theme.Light"
<application>
), los elementos de la lista aparecerá con el texto blanco, haciéndolos ilegibles.
Sin embargo, cuando se usa android:entries
para especificar una lista estática de elementos, los elementos aparecen correctamente, con el color de texto negro.
¿Qué estoy haciendo mal? ¿Cómo puedo hacer que mi adaptador dinámico use el diseño estándar pero trabaje con un tema ligero?
De hecho, el uso de 'this' en lugar de' getApplicationContext() 'lo soluciona. ¡Guauu! ¡Gracias! – Felix
@Felix: Sí, 'getApplicationContext()' es un método seriamente desordenado. Le da un objeto 'Application', que es un' Context', pero aparentemente no le va bien con cualquier material relacionado con GUI relacionado con 'Context's. A menos que realmente necesite el objeto 'Application' (por ejemplo, si tiene uno personalizado), nunca usaría' getApplicationContext() '. Después de todo, ese método es un método ... en 'Contexto'. Entonces, por definición, ya tienes un 'Contexto' perfectamente delicioso. ¡Me alegro de que esto haya funcionado! – CommonsWare
Siempre tuve la impresión de que 'getApplicationContext()' era de alguna manera más * correcto * (¿y si cambian cómo funcionan los contextos y 'this' ya no es un' Contexto'? 'GetApplicationContext()' probablemente se actualizaría para reflejar los cambios en la API y yo no tendríamos que refactorizar mi código). Gracias por aclarar eso :) – Felix