Custom ListView: записи разделителя игнорируют настройки

Я создал собственный ListView с разделителями (используя этот учебник). Он выглядит и работает нормально, но разделители по-прежнему активны, фокусируются и могут вызывать контекстное меню. Итак, я попытался "заткнуть их":

...
case TYPE_SEPARATOR:
    convertView.setFocusable(false);
    convertView.setClickable(false);
    convertView.setLongClickable(false);
    break;
        }

return convertView;

Но они полностью игнорируют эти настройки! Для тестирования я использовал covertView.setBackground(Color.MAGENTA) и это работает хорошо. Кто-нибудь понял, что может быть не так?

1 ответ

Предполагая, что ваш адаптер реализует BaseAdapter (например, ArrayAdapter), переопределите метод isEnabled() в адаптере.

@Override
public boolean isEnabled(int position) {
    if (getItemViewType(postion) == TYPE_SEPARATOR) {  // method taken from example
        return false;
    }
    return super.isEnabled(position);
}

Чтобы отслеживать, какие элементы являются разделителями, а какие нет, сохраните ArrayList или какой-либо другой тип коллекции, которая отслеживает.

Другие вопросы по тегам