Cambia dinamicamente il colore del testo di un TextView all'interno di un ListView?
-
26-09-2019 - |
Domanda
Sto cercando di creare una lobby di gioco per un progetto e vorrei che il testo dello stato del gioco fosse di un colore diverso:rosso per una partita "[IN CORSO]" e verde per una partita "[In attesa di x giocatori]".Il ListView verrà popolato con i dati e ogni elemento ListView avrà un ID di gioco e quindi immediatamente a destra lo stato del gioco.
In questo momento sto essenzialmente utilizzando il codice Hello ListView per creare il mio ListView.
(Nel costruttore)
ArrayList<HashMap<String, String>> gameList = new ArrayList<HashMap<String, String>>();
private ListView gamesListView;
private SimpleAdapter gameItems.
(In onCreate())
gamesListView = (ListView) findViewById(R.id.listViewGames);
gameItems = new SimpleAdapter(this, gameList, R.layout.gamelistitem,
new String[] { "line1, "line2},
new int[] { R.id.tvGameID, R.id.tvGameStatus });
gamesListView.setAdapter(gameItems);
Quindi, ho un pulsante di aggiornamento che ottiene i dati dal nostro database.Riceverà due stringhe, una per l'ID del gioco e l'altra per lo stato del gioco.Se lo stato del gioco è 0, significa che sta ancora aspettando i giocatori.Se lo stato del gioco è 1, il gioco è iniziato.Quindi, creo un gameItem da aggiungere alla gameList:
HashMap<String, String> gameItem = new HashMap<String, String>();
gameItem.put("line1", gameIDString);
gameItem.put("line2", renderGameStatus(gameStatusString));
gameList.add(gameItem);
gameItems.notifyDataSetChanged();
private String renderGameStatus(String statusString) {
if (statusString.equals("0")) {
return "[Waiting for players]";
} else {
return "[IN PROGRESS]";
}
}
Questo è dove sono bloccato.Non capisco davvero come posso modificare il TextView specifico quando creo il gameItem o quando lo aggiungo al gameList.Non riesco a vedere un modo per accedere alle proprietà di TextView.Vedo come è impostato il testo della vista (tramite la mappatura delle stringhe su "line1" e "line2", ma non so come modificare nessuna delle proprietà.
Grazie per qualsiasi aiuto!
Soluzione 2
La risposta corretta a questa domanda è quello di seguire uno dei molti tutorial là fuori sulle righe ListView personalizzato, e l'utilizzo di un adattatore personalizzato per il vostro ListView. Ecco un buon compromesso.
Altri suggerimenti
Crei la tua visualizzazione di testo nel file XML?se è così prova:
TextView t = (TextView) findViewById(R.layout.yourTextView);
t.setTextColor(color);
t.setBackgroundColor(color);
Spero possa aiutare