Ответ 1
Существует простое объяснение.
Когда вы применяете выделение с помощью мыши, вы выполняете список действий:
1. Нажмите левую кнопку мыши на каком-либо элементе
- список выбирает элемент под мышью и запускает 1-ое событие
- также здесь вы получите getValueIsAdjusting = true, так как мышь еще не выпущена
2. Вы можете перетащить мышь, не отпуская ее, чтобы изменить выбор
- список запустит дополнительное событие для каждого изменения выбора, сделанного
- getValueIsAdjusting будет также верным для каждого из этих событий, так как вы все еще делаете изменения
3. Вы отпустите мышь
- список запустит окончательное событие - операция выбора завершена
- getValueIsAdjusting = false теперь, вы можете делать все, что хотите, с окончательным выбором
Чтобы суммировать - эти дополнительные события запускаются, чтобы вы могли полностью контролировать поведение списка при изменении выбора (точнее, в последовательности изменения выбора). Возможно, вы захотите проигнорировать изменения выбора, когда getValueIsAdjusting = true, так как всегда будет окончательное событие с getValueIsAdjusting = false, которое сообщит вам, что изменения выбора завершены.
Кроме того, когда вы меняете выбор с помощью списка клавиш, список не будет знать, измените ли вы его после первого нажатия клавиши или нет, поэтому getValueIsAdjusting всегда будет false для таких изменений.