Android ListView: как использовать multiple и single группы одновременно?
Здравствуйте!
Делаю своё первое приложение, никогда и ни разу не писал ещё вопросы, всё находил через интернет, сделано уже очень много, но с этой проблемой справиться не могу. Уже без вранья неделю сижу и мучаюсь. Решил всё-таки просить помощи.
Есть ListView, в котором присутствуют группы элементов: заголовок группы и непосредственно Checkable-элементы списка. Вся сложность в том, что мне не подходит режим выбора multipleChoice или singleChoice, так как у меня есть группы элементов и такие, и такие.
Представим, что это выбор ингредиентов для пиццы. Первая группа - тип теста (тонкое / толстое) - единственный выбор, вторая группа - добавки (сыр, маслины, колбаса и так далее) - множественный выбор.
На данный момент я сделал так: android:choiceMode="multipleChoice", вывожу через адаптер элементы первой группы с android:drawableLeft="?android:attr/listChoiceIndicatorSingle", элементы второй группы - с android:drawableLeft="?android:attr/listChoiceIndicatorMultiple". Но этого, понятно, недостаточно, так как одиночные элементы всё равно можно выбирать несколько вариантов. Я выкручивался так: у ListView по событию itemClick проверяю - если элемент из одиночной группы, то снимаю через setItemChecked выбор с других элементов. Это работает, список выглядит так, как нужно. Но, происходит странное: setItemChecked почему-то даёт задержку! И выбор списка как бы тормозит на полсекунды! То есть, был тип теста Тонкое, ставим Толстое и момент перехода чека подтормаживает... Если setItemChecked убрать - никаких тормозов нет. В режиме android:choiceMode="singleChoice" тоже при переключении радио-кнопок никаких тормозов нет. А вот вручную если - есть!
Вообще, это решение наверняка костыльное и неправильно. Но я не могу найти другого. Словно я первый человек на планете, которому понадобились одиночные и множественные группы в одном ListView! Не верю :)
Подскажите, пожалуйста, как всё-таки корректно реализовать задуманное? Спасибо!