ho imparato che quando si usa android:entries
con un ListView
, utilizza android.R.layout.simple_list_item_1
come il layout per un elemento dell'elenco e android.R.id.text1
come l'ID del TextView all'interno di quel layout. Per favore correggimi se sbaglio.Utilizzare android.R.layout.simple_list_item_1 con un tema leggero
Sapendo questo, ho voluto creare il mio adattatore ma utilizzare le stesse risorse di layout, al fine di fornire coerenza UI con la piattaforma. Così, ho provato la seguente:
mAdapter = new SimpleCursorAdapter(
getApplicationContext(),
android.R.layout.simple_list_item_1,
mSites,
new String[] { SitesDatabase.KEY_SITE },
new int[] { android.R.id.text1 }
);
Purtroppo, perché sto usando un tema leggero (ho android:theme="@android:style/Theme.Light"
nel mio <application>
), le voci di elenco appaiono con testo bianco, rendendoli illeggibili.
Tuttavia, quando si utilizza android:entries
per specificare un elenco statico di elementi, gli elementi vengono visualizzati correttamente, con colore del testo nero.
Cosa sto sbagliando? Come posso rendere il mio adattatore dinamico utilizzare il layout standard ma lavorare con un tema leggero?
Infatti, l'uso di 'this' invece di' getApplicationContext() 'lo corregge. Wow! Grazie! – Felix
@Felix: Sì, 'getApplicationContext()' è un metodo gravemente incasinato. Ti dà un oggetto 'Application', che è un' Context', ma a quanto pare non funziona bene con le cose relative alla GUI relative a 'Context's. A meno che tu non abbia effettivamente bisogno dell'oggetto 'Applicazione' (ad esempio, ne hai uno personalizzato), non userei mai' getApplicationContext() '. Dopotutto, quel metodo è un metodo ... su 'Contesto'. Quindi, per definizione, hai già un 'Contesto' perfettamente delizioso. Sono contento che questo ha funzionato! – CommonsWare
Ho sempre avuto l'impressione che 'getApplicationContext()' fosse in qualche modo più * corretto * (cosa succede se cambiano il modo in cui i contesti funzionano e 'this' non è più un' Context'? 'GetApplicationContext()' probabilmente verrà aggiornato per riflettere i cambiamenti nell'API e non dovrei refactoring il mio codice). Grazie per averlo chiarito :) – Felix