Изменить цвет текста в ListView - PullRequest
1 голос
/ 23 марта 2011

У меня есть простой просмотр списка, который создается с помощью адаптера массива и ArrayList;

Есть ли способ получить доступ к определенной строке в представлении списка, а затем изменить цвет текста представления текста, находящегося в этой строке в представлении списка?

Я знаю, как изменить цвет текста текстового представления, но у меня проблемы с доступом к текстовому представлению, которое находится внутри представления списка

Ответы [ 2 ]

13 голосов
/ 23 марта 2011

Если вы посмотрите на источник для simple_list_item_1, вы увидите, что это просто TextView. Источник в:

<sdk-dir>/platforms/<your-platform>/data/res/layout/simple_list_item_1

Суперкласс ArrayAdapter вернет этот TextView в своем методе getView. Это означает, что вы можете создать подкласс ArrayAdapter, а внутри метода getView вашего подкласса вы можете просто связать его с суперклассом, привести его представление к TextView и выполнить свою задачу. Например, если вы хотите установить для первых трех элементов в списке значение textSize 24, а для остальных - 14, вы можете сделать следующее:

public View getView(int position, View convertView, ViewGroup parent) {
  TextView tv = (TextView) super.getView(position, convertView, parent);

  if (position < 3) {
    tv.setTextSize(24.0f);
  } else {
    tv.setTextSize(14.0f);
  }
  return tv;
}

Если вы используете более сложное представление, чем simple_list_item_1, вы можете выяснить идентификаторы элементов в представлении, изучив источник, а затем вызвать findViewById в представлении, возвращаемом суперклассом. Например, файл two_line_list_item.xml имеет TextViews с идентификаторами android.R.id.text1 и android.R.id.text2, поэтому вы должны иметь возможность обращаться с ними следующим образом:

public View getView(int position, View convertView, ViewGroup parent) {
  View v = super.getView(position, convertView, parent);
  TextView tv1 = (TextView)v.findViewById(android.R.id.text1);
  TextView tv2 = (TextView)v.findViewById(android.R.id.text2);

  //do what you want with the TextViews
}
1 голос
/ 23 марта 2011

С помощью пользовательского элемента списка в ваших адаптерах getView вы можете легко изменить цвет текста, вызвав findViewById(R.id.myText), а затем вызвав setTextColor. Фактически, вы можете сделать это с помощью встроенных элементов списка, вам просто нужно знать идентификатор TextView ... который я не знаю, но вы сможете найти его достаточно легко.

Чтобы изменить его в XML, см. Применение стилей и тем , чтобы изменить цвет текста, если вы используете стандартный элемент ListView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...