Динамически изменить цвет текста текстового просмотра внутри ListView?
-
26-09-2019 - |
Вопрос
Я пытаюсь создать игровое лобби для проекта, и я хотел бы, чтобы текст статуса игры быть другим цветом: красный для игры «[в прогрессе]» и зеленый цвет для игры, которая «[ждать x игроков ] " 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);
Затем у меня есть кнопка обновления, которая получает данные из нашей базы данных. Это получит две строки, один для ID игры, а другой для статуса игры. Если статус игры 0, то он все еще ждет игроков. Если игровой статус 1, то игра началась. Итак, я создаю GameItem, чтобы добавить в 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]";
}
}
Это где я застрял. Я не очень понимаю, как я могу изменить конкретный текстовый просмотр, когда я создаю грифтем или когда добавляю это в Gameist. Там не так, как я могу видеть доступ к свойствам TextView. Я вижу, как установлен текст представления (через сопоставление струн до «Line1» и «Line2», но я не знаю, как изменить какие-либо из свойств.
Спасибо за любую помощь!
Решение 2
Правильный ответ на этот вопрос - следовать одному из множества учебников на пользовательских строках ListView, а также с помощью пользовательского адаптера для вашего listView. Вот хороший.
Другие советы
Вы создаете свой TextView в файле XML? Если так, попробуйте:
TextView t = (TextView) findViewById(R.layout.yourTextView);
t.setTextColor(color);
t.setBackgroundColor(color);
надеюсь, это поможет