В моем приложении для Android у меня есть ListView с 5 элементами.Я создал собственный адаптер, чтобы изменить фон некоторых элементов listView.Например, второй элемент представления списка еще не готов, поэтому я хочу набрать setBackground(Color.Gray)
, чтобы он выглядел так, как будто это еще не сделано.Чтобы сделать это, я переопределил метод getView () из ArrayAdapter в моем настраиваемом адаптере следующим образом:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
if(!itensAvailable[position]) v.setBackgroundColor(Color.Gray);
return v;
}
Странная вещь, независимо от того, использую ли я логический itensAvailable[position]
или !itensAvailable[position]
первый элемент списка всегда имеет измененный фон!Все остальные элементы списка ведут себя так, как ожидалось, кроме первого.Более странно, если я сделаю if(position == 2) v.setBackgroundColor(Color.Gray);
, это изменит фон с предмета в позиции 2, а также с первым предметом!Если я сделаю
if(position == 2) {
v.setBackgroundColor(Color.Gray);
System.out.println(v.getText());
}
Еще более странно!Только текст из позиции 2 печатается, а не текст из первого пункта.
Что происходит?Ошибка Android?Кстати, я тестирую его на устройстве XOOM 3.2 Honeycomb.
И, очевидно, если я прокомментирую это, если код, у первого элемента не изменился фон.