ListView内のTextViewのテキストの色を動的に変更しますか?
-
26-09-2019 - |
質問
プロジェクトのゲーム ロビーを作成しようとしていますが、ゲームのステータス テキストを別の色にしたいと考えています。赤は「[進行中]」ゲーム、緑は「[x 人のプレイヤーを待っています]」ゲームです。ListView にはデータが入力され、ListView の各項目にはゲーム ID があり、そのすぐ右側にゲームのステータスが表示されます。
現在、私は基本的に 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);
次に、データベースからデータを取得する更新ボタンがあります。2 つの文字列を取得します。1 つはゲームの ID で、もう 1 つはゲームのステータスです。ゲームのステータスが 0 の場合、まだプレイヤーを待っています。ゲームステータスが 1 の場合、ゲームは開始されています。そこで、gameList に追加する gameItem を作成します。
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]";
}
}
ここで行き詰まってしまったのです。gameItem を作成するとき、またはそれを gameList に追加するときに、特定の TextView を変更する方法がよくわかりません。TextView のプロパティにアクセスする方法がわかりません。(文字列を「line1」と「line2」にマッピングすることで)ビューのテキストがどのように設定されているかはわかりますが、プロパティを変更する方法がわかりません。
助けてくれてありがとう!
解決 2
この質問に対する正しい答えは、カスタム ListView 行に関する多くのチュートリアルの 1 つに従い、ListView のカスタム アダプターを使用することです。 こちらです いいもの。
他のヒント
XML ファイルでテキストビューを作成しますか?もしそうなら、試してみてください:
TextView t = (TextView) findViewById(R.layout.yourTextView);
t.setTextColor(color);
t.setBackgroundColor(color);
それが役立つことを願っています