繁体   English   中英

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

[英]Dynamically change text color of a TextView inside a ListView?

我正在尝试为一个项目创建一个游戏大厅,我希望游戏的状态文本是一个不同的颜色:红色表示“[IN PROGRESS]”游戏,绿色表示游戏“[等待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”,但我不知道如何更改任何属性。

谢谢你的帮助!

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

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

希望有所帮助

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM