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!

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top