Списки с множественным выбором

Разрабатываем приложение, вышел спор о том, как лучше показать выбранными несколько (сотен) элементов из списка. Я предложил просто использовать multiple choice list, где каждый элемент — строка — может быть или выделен стандартными средствами интерфейса (цветным фоном) или нет. Состояние меняется просто кликом мышью (или пробелом) или зажали‑потянули по части списка. Уже сделанное выделение не сбрасывается по клику на другом элементе. Но стайлгайды рекомендуют для multiple choice добавлять к каждому элементу списка чекбокс. Того же хотят пользователи со стажем. При этом, поведение таких контролов бывает разное: иногда эти чекбоксы работают совершенно отдельно от обычного выделения (выходит, два типа выделения?), иногда полностью дублируют его, иногда появляются только вместе с выделением. Постановщик задачи мотивирует необходимость вводить чекбоксы ещё и тем, что на double‑click повешено отдельное действие, но пользователи часто ошибаются и будут сбивать выделение элемента. Какой вариант выбрать?

Синяя подсветка означает текущий, выделенный элемент, а не выбор. Бывает такой вид списка, который не отличает одного от другого, где можно с Шифтом выделить сразу диапазон вариантов, а с Контролем или Коммандом — несколько разных, и это выделение сразу и будет выбором. Также работает выделение файлов в Файндере или Проводнике. Но это же ужасно хрупко. Представьте: вы внимательно и осторожно навыделяли 15 пунктов, а потом случайно ткнули не туда или нажали стрелку на клавиатуре, и всё потерялось.

Вы пишете, что состояние меняется пробелом, но непонятно, состояние какой именно строчки пробел меняет. Если синим у вас обозначен выбор, то возникает вопрос о том, как обозначать текущую строку. Придумать ответ можно, но зачем, если вариант с чекбоксами понятен просто по внешнему виду?

Так что надо брать вариант с чекбоксами, а синим фоном обозначать выделенный элемент.

А вот то, что на даблклик у вас отдельное действие — это перебор, не надо бы так делать.

Интерфейс
Отправить
Поделиться
Запинить

Комментарии

А штука в том, что можно не сбрасывать выбор при случайном тыке (это стандартная опция таких списков).

На вопрос, состояние какой строчки меняет пробел, — он меняет состояние строчки с фокусом (да, в списках есть ещё и индикация текущего фокуса действия, обычно рамочка пунктиром). Фокус работает отдельно от выделения в общем случае.

Именно поэтому вопрос про чекбоксы: и так всё сложновато, а мы вводим ещё один уровень.

19 ноя 2024

Важно понять, для кого этот интерфейс, сейчас выглядит так, что вы для себя его делаете и пытаетесь отстаивать позицию, как вам же будет удобнее и понятнее. Но если вы ориентируетесь на большинство, то лучше применять то, что работает для большинства.

P. S. Возможно, пользователи уже несколько лет «варятся» в приложении, и тогда будет проще понять последовательную логику, чем ломать устоявшиеся паттерны и делать «как надо».

26 ноя 2024

Рекомендуем другие советы