Altere dinamicamente a cor do texto de uma visão de texto dentro de uma ListView?
-
26-09-2019 - |
Pergunta
Estou tentando criar um lobby de jogo para um projeto, e gostaria que o texto de status do jogo fosse uma cor diferente: Red para um jogo "em andamento] e verde para um jogo que é" [esperando por x jogadores ] ". O ListView será preenchido com dados, e cada item da ListView terá um ID de jogo e, em seguida, imediatamente à direita do status do jogo.
No momento, estou basicamente usando o código Hello ListView para criar meu ListView.
(No construtor)
ArrayList<HashMap<String, String>> gameList = new ArrayList<HashMap<String, String>>();
private ListView gamesListView;
private SimpleAdapter gameItems.
(Em 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);
Em seguida, tenho um botão de atualização que obtém dados do nosso banco de dados. Ele receberá duas cordas, uma para o ID do jogo e o outro para o status do jogo. Se o status do jogo for 0, ainda está esperando os jogadores. Se o status do jogo for 1, o jogo começou. Então, eu crio um GameItem para adicionar ao 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]";
}
}
É aqui que estou preso. Eu realmente não entendo como posso alterar a visão de texto específica quando crio o GameItem ou quando adiciono isso ao GameList. Não existe uma maneira de ver o acesso às propriedades do TextView. Vejo como o texto da visualização é definido (através do mapeamento das strings para "Linha1" e "Linha2", mas não sei como alterar nenhuma das propriedades.
Obrigado por qualquer ajuda!
Solução 2
A resposta correta a esta pergunta é seguir um dos muitos tutoriais por aí em linhas de ListView personalizadas e usando um adaptador personalizado para o seu ListView. Aqui está uma boa.
Outras dicas
Você cria seu TextView no arquivo XML? Se sim, tente:
TextView t = (TextView) findViewById(R.layout.yourTextView);
t.setTextColor(color);
t.setBackgroundColor(color);
espero que ajude