2010-06-08 9 views
10

he aprendido que cuando se utiliza con un android:entriesListView, 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?

Respuesta

15

Corrígeme si me equivoco.

Usted está al menos tan mal. Usa com.android.internal.R.layout.simple_list_item_1. Si bien es casi idéntico a android.R.layout.simple_list_item_1, puede tener un tema diferente.

Además, nunca use getApplicationContext(). Simplemente use su Activity como Context. A ver si eso ayuda.

+2

De hecho, el uso de 'this' en lugar de' getApplicationContext() 'lo soluciona. ¡Guauu! ¡Gracias! – Felix

+3

@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

+0

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

Cuestiones relacionadas