Если вы посмотрите на источник для 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
}