Custom ListView: записи разделителя игнорируют настройки - PullRequest
0 голосов
/ 26 августа 2011

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

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

return convertView;

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

1 Ответ

0 голосов
/ 26 августа 2011

Предполагая, что ваш адаптер реализует 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 или какой-либо другой тип коллекции, которая отслеживает.

...