Я работаю над ListActivity, который будет отображать набор чисел (весов). Я хотел бы изменить фон определенной строки в ListView. Для этого я создал собственную реализацию класса ArrayAdapter и переопределил метод getView. Адаптер принимает список чисел и устанавливает желтый фон для строки с номером 20 (для простоты).
public class WeightListAdapter extends ArrayAdapter<Integer> {
private List<Integer> mWeights;
public WeightListAdapter(Context context, List<Integer> objects) {
super(context, android.R.layout.simple_list_item_1, objects);
mWeights = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
int itemWeight = mWeights.get(position);
if (itemWeight == 20) {
v.setBackgroundColor(Color.YELLOW);
}
return v;
}
}
Проблема в том, что не только строка с номером 20 получает желтый фон, но и строка с число 0 (первая строка) и I ' Я не уверен, почему это так.
Я что-то делаю не так в методе getView (например, вызываю супер-метод)? Мои доводы в пользу реализации таковы: все возвращаемые представления должны быть одинаковыми (поэтому я вызываю супер-метод), следует изменить только представление, соответствующее критериям if.
Спасибо за вашу помощь!