Ok, qui ci sono alcune cose che si dovrebbe essere su chiara:
- Il colore di sfondo che si sta configurando nel file XML è l'attività e non dei ListItems si sta tentando di definire.
- Ogni voce di elenco ha il proprio file di layout che deve essere passato o gonfiato nel caso in cui si stia utilizzando un layout complesso per la voce di elenco.
cercherò di spiegare questo con un esempio di codice:
**** Iniziamo con il layout ListItems ** : salvatelo nella cartella res/layout
di voi progetto Android con dire ** list_black_text .xml
<?xml version="1.0" encoding="utf-8"?>
<!-- Definig a container for you List Item-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center_vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Defining where should text be placed. You set you text color here-->
<TextView
android:id="@+id/list_content"
android:textColor="#000000"
android:gravity="center"
android:text="sample"
android:layout_margin="4dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
Beh, un layout semplice, con un TextView
per essere precisi. È necessario disporre di un ID assegnato a TextView per poterlo utilizzare.
Ora viene visualizzato lo schermo/attività/layout principale, come ho detto che stai definendo lo sfondo del tuo schermo con l'attributo android:background
. Vedo che hai definito anche un TextView e sospetto che tu stia cercando di definire il contenuto/l'elemento della lista lì, che non è affatto necessario.
Ecco il layout modificato:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF">
<ListView
android:id="@android:id/list" android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<!-- REMOVED TEXT VIEW, AND KEEPING BACKGROUND WHITE -->
</LinearLayout>
E, infine, cosa più importante, impostare l'adattatore.
setListAdapter(new ArrayAdapter<String>(
this, R.layout.list_black_text, R.id.list_content, listItems));
Avviso la risorsa di layout che stiamo passando all'adattatore R.layout.list_black_text
, e R.id.list_content
che è TextView ID abbiamo dichiarato. Ho anche cambiato ArrayAdapter in String perché è generico.
Spero che questo spieghi tutto. Segna la mia risposta accettata se sei d'accordo.
disordinato, ma un buon modo soluzione rapida
Si può anche fare questo con una soluzione rapida se non si vuole andare avanti con il layout complesso definire ecc
Mentre istanziare l'adattatore dichiarano una classe interna per fare questo, ecco il codice di esempio:
ArrayAdapter<String> adapter=new ArrayAdapter<String>(
this, android.R.layout.simple_list_item_1, listItems){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view =super.getView(position, convertView, parent);
TextView textView=(TextView) view.findViewById(android.R.id.text1);
/*YOUR CHOICE OF COLOR*/
textView.setTextColor(Color.BLUE);
return view;
}
};
/*SET THE ADAPTER TO LISTVIEW*/
setListAdapter(adapter);
Grazie mille amico. Non ho mai saputo che esisteva un file xml separato per ListView –
Questo mi dà l'errore: ArrayAdapter richiede che l'ID risorsa sia un TextView. Come sei riuscito a far funzionare tutto questo senza scrivere il tuo adattatore? – odiggity
@odiggity, usa il costruttore di 4 argomenti invece di un 3. se lo stai già facendo allora il terzo argomento in 4 arg costruttore è un riferimento di id alla textview descritta nel tuo layout di lista, in breve R.id.list_content nel mio esempio è id che si riferisce a textview nel mio layout di voce di elenco specificato con R.layout.list_black_text – Shardul