Динамически изменить цвет текста TextView внутри ListView? - PullRequest
1 голос
/ 19 ноября 2010

Я пытаюсь создать игровое лобби для проекта, и я хотел бы, чтобы текст статуса игры был другого цвета: красный для игры «[В ПРОГРЕССЕ]» и зеленый для игры, которая «[Ожидание»для х игроков] ".ListView будет заполнен данными, и каждый элемент ListView будет иметь идентификатор игры, а затем сразу же справа от этого статуса игры.

Сейчас я по сути использую код Hello ListView для создания моего ListView..

(в конструкторе)

ArrayList<HashMap<String, String>> gameList = new ArrayList<HashMap<String, String>>();
private ListView gamesListView;
private SimpleAdapter gameItems.

(в 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);

Затем у меня есть кнопка обновления, которая получает данные из нашей базы данных.Он получит две строки, одну для идентификатора игры, а другую для статуса игры.Если статус игры равен 0, то он все еще ждет игроков.Если статус игры равен 1, то игра началась.Итак, я создаю игровой элемент для добавления в список игр:

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]";
    }
}

Вот где я застрял.Я не совсем понимаю, как я могу изменить конкретный TextView при создании gameItem или когда я добавляю это в gameList.Я не вижу способа доступа к свойствам TextView.Я вижу, как задан текст представления (через сопоставление строк с «line1» и «line2», но я не знаю, как изменить какое-либо из свойств.

Спасибо за любую помощь!

Ответы [ 2 ]

3 голосов
/ 19 ноября 2010

Создаете ли вы текстовое представление в файле XML? если это так, попробуйте:

TextView t = (TextView) findViewById(R.layout.yourTextView);
t.setTextColor(color);
t.setBackgroundColor(color);

надеюсь, что поможет

1 голос
/ 27 июня 2011

Правильный ответ на этот вопрос заключается в том, чтобы следовать одному из множества учебных пособий по настраиваемым строкам ListView и использовать собственный адаптер для вашего ListView. Вот хороший.

...