2012-04-26 5 views
0

Я создаю игру, и вот код, который я использую, чтобы показать список игр с именами пользователей, счетом, датой и т. Д. Но как мне получить значения TextViews tv_playerScore и tv_opponentScore, чтобы я мог сравнить их и изменить textColors из них? Потому что то, что я хочу, это parseInt и посмотреть, какая из них имеет наибольшее значение, а цвет текста - зеленый, а другие - цветной.Изменить цвет текста внутри ListView

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); 

}

ответ

0

Если вы хотите, чтобы получить значения в TextView должны использовать функцию findViewById от деятельности.

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

Если showGames() метод не является класс, который наследует от активности (или похожего), вы должны сделать инъекцию сеттеров из элементов зрения для тех, кто хочет получить доступ.

Для сравнения:

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

Наконец, чтобы изменить цвет:

tv_playerScore.setTextColor(Color.CYAN); 

С уважением.

0

Я думаю, вы должны иметь более близкий взгляд в том, как ListViews работа (http://developer.android.com/resources/tutorials/views/hello-listview.html)

Короче я думаю, вам придется написать свой собственный класс Adpater (например, расширить SimpleAdapater) и написать свою методику GetView. Здесь вы можете установить цвет текстовых просмотров в зависимости от соответствующего значения. (Я думаю, что было бы целесообразно, чтобы они отсортировались раньше, а не проверяли их каждый раз, когда элемент списка рисован ...

Смежные вопросы