2010-11-18 122 views
1

我正在尝试为一个项目创建一个游戏大厅,并且我希望游戏的状态文本是不同的颜色:红色代表“[IN PROGRESS]”游戏,绿色代表“[等待x玩家]“。 ListView将填充数据,每个ListView项目将有一个游戏ID,然后立即在该游戏状态的右侧。动态更改ListView中TextView的文本颜色?

现在我基本上使用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”,但我不知道如何更改任何属性。

感谢您的任何帮助!

回答

1

正确回答这个问题,就是要遵循很多教程的一个在那里定制的ListView行,并为您的ListView使用自定义适配器。Here's一个好的。

3

你创建的XML文件在你的TextView如果是这样尝试:

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

希望帮助

+0

不幸的是没有...不会改变ListView中所有TextView的颜色吗?我正在寻找改变ListView中每个特定TextView的颜色。 – Rockmaninoff 2010-11-18 23:29:15

+0

嗯,现在我明白了..我不知道你是否已经尝试过,但我记得有关实施BaseAdapter有完全控制创建的列表和东西的东西。可能你应该看看那个。祝你好运 – dds 2010-11-18 23:38:22