更改ListView中的文本颜色

时间:2012-04-26 13:52:17

标签: android listview textview textcolor

我正在创建一个游戏,这里是用于显示用户名,分数,日期等游戏列表的代码。但是如何获取TextViews tv_playerScore和tv_opponentScore的值以便我可以比较他们改变了他们的textColors?因为我想要的是parseInt并查看哪个具有最高值并将其textcolor设置为绿色,其他文本颜色设置为红色。

private void showGames(JSONArray games) throws JSONException {
    ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
    HashMap<String, String> map = new HashMap<String, String>();
    for (int i = 0; i < games.length(); i++) {

        map.put("challenger", games.getJSONObject(i).getString("challengerName"));
        map.put("active", games.getJSONObject(i).getString("active"));
        map.put("opponent", games.getJSONObject(i).getString("opponentName"));
        map.put("date", games.getJSONObject(i).getString("date"));
        map.put("gameID", games.getJSONObject(i).getString("gameID"));
        map.put("amount", games.getJSONObject(i).getString("amount"));
        map.put("playerScore", games.getJSONObject(i).getString("challengerScore"));
        map.put("opponentScore", games.getJSONObject(i).getString("opponentScore"));


        if (Integer.parseInt(games.getJSONObject(i).getString("active")) == 2) {

            mylist.add(map);
        }

        map = new HashMap<String, String>();
    }

    SimpleAdapter sadapter = new SimpleAdapter(this, mylist, R.layout.list, new String[] 
            {"amount", "active", "gameID", "challenger", "opponent", "date", "playerScore", "opponentScore"},
            new int[] {R.id.tv_amount, R.id.tv_activte, R.id.tv_gameID, R.id.tv_player, R.id.tv_opponent, R.id.tv_date, R.id.tv_playerScore, R.id.tv_opponentScore}); 


    listView.setAdapter(sadapter);

}

2 个答案:

答案 0 :(得分:0)

如果要获取textview的值,必须使用Activity中的findViewById函数。

TextView tv_playerScore = (TextView) findViewById (R.id.tv_playerScore);

如果showGames()方法不是从Activity(或类似)继承的类,则应该为想要访问的人设置一个setter注入视觉元素。

比较:

tv_playerScore.getText().toString().compareTo(tv_opponentScore.getText().toString());

最后,改变颜色:

tv_playerScore.setTextColor(Color.CYAN);

问候。

答案 1 :(得分:0)

我认为你应该仔细研究ListViews的工作方式(http://developer.android.com/resources/tutorials/views/hello-listview.html

简而言之,我猜你必须编写自己的Adpater类(例如扩展SimpleAdapater)并写入其getView方法。您可以在此处根据相应值设置文本视图的颜色。 (我认为在每次绘制列表元素之前对它们进行排序而不是检查它们是有意义的...