質問

プロジェクトのゲーム ロビーを作成しようとしていますが、ゲームのステータス テキストを別の色にしたいと考えています。赤は「[進行中]」ゲーム、緑は「[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);

それが役立つことを願っています

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top