Я работаю над ListActivity, который отображает кучу чисел (весов). Я хотел бы изменить фон определенной строки в ListView. Для этого я создал пользовательскую реализацию класса ArrayAdapter и переопределил метод getView. Адаптер принимает список номеров и устанавливает фон строки с номером 20 в желтый (для простоты).Custom ArrayAdapter setBackground в getView
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 (первая строка, которая является), и я не знаю, почему это так.
Я делаю что-то неправильно в методе getView (например, вызывая метод super)? Мое рассуждение о реализации: все возвращенные представления должны быть одинаковыми (вот почему я называю супер-метод) только представление, соответствующее критериям if, которые необходимо изменить.
Благодарим за помощь!
Я вижу. Это будет иметь смысл, да. Итак, теперь вопрос заключается в том, что это лучший способ решить эту проблему. Отбрасывание convertView или установка атрибутов стиля для обоих, если в конце концов, параметры? – Igor