Пользовательский ArrayAdapter setBackground в getView

Я работаю над 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.

Спасибо за вашу помощь!

5
задан Shruti 9 May 2013 в 09:15
поделиться