动态更改ListView中TextView的文本颜色?

时间:2010-11-18 23:02:37

标签: android textview android-listview

我正在尝试为项目创建游戏大厅,我希望游戏的状态文本为不同的颜色:红色表示“[进展中”]游戏,绿色表示游戏“[等待”对于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);

然后,我有一个刷新按钮,从我们的数据库中获取数据。它将获得两个字符串,一个用于游戏的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]";
    }
}

这就是我被困住的地方。在创建gameItem或将其添加到gameList时,我真的不明白如何更改特定的TextView。我无法看到访问TextView属性的方法。我看到如何设置视图的文本(通过将字符串映射到“line1”和“line2”,但我不知道如何更改任何属性。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您是否在XML文件中创建了textview?如果是这样尝试:

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

希望有所帮助

答案 1 :(得分:1)

这个问题的正确答案是在自定义ListView行上遵循许多教程之一,并为ListView使用自定义适配器。 Here's一个好的。