我正在尝试为项目创建游戏大厅,我希望游戏的状态文本为不同的颜色:红色表示“[进展中”]游戏,绿色表示游戏“[等待”对于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”,但我不知道如何更改任何属性。
感谢您的帮助!
答案 0 :(得分:3)
您是否在XML文件中创建了textview?如果是这样尝试:
TextView t = (TextView) findViewById(R.layout.yourTextView);
t.setTextColor(color);
t.setBackgroundColor(color);
希望有所帮助
答案 1 :(得分:1)
这个问题的正确答案是在自定义ListView行上遵循许多教程之一,并为ListView使用自定义适配器。 Here's一个好的。