Flex 4 - Выбрать и отменить выбор одного и того же элемента в ‹s: List› с помощью мыши

В Flex 4 у меня есть компонент Spark List с рендерерами элементов. Я хотел бы выбрать элемент в списке, щелкнув по нему, и также отменить выбор, щелкнув тот же выбранный элемент. Как выключатель.

У моего средства визуализации элементов есть следующие состояния:

<s:states>
<s:State name="normal"/>
<s:State name="hovered"/>
<s:State name="selected"/>
</s:states>

поэтому я попытался добавить прослушиватель событий щелчка к средству визуализации элементов с помощью:

private function selectUnSelect():void {
if (currentState == 'selected') currentState = 'normal';
else currentState = 'selected';

}

с неудобным поведением ... когда элемент остается выбранным даже после повторного щелчка по нему в выбранном состоянии.

Подумайте об использовании компонента List без Command (на Mac) или кнопки Control в Windows.


person Yozef    schedule 14.12.2010    source источник
comment
Можно ли добавить свойство к вашему базовому поставщику данных, которое указывало бы, был ли выбран элемент выбран или нет? Что-то вроде: public var isSelected: Boolean = true?   -  person Jason Towne    schedule 15.12.2010


Ответы (2)


Эта запись в блоге может быть вам полезна: http://flexponential.com/2009/12/13/multiple-selection-in-a-spark-list-without-the-control-key/

person sshongru    schedule 14.12.2010

Вместо того, чтобы указывать состояние рендеринга элементов, я буду работать с самим списком. Пусть ваше средство визуализации элементов отправляет событие при щелчке по нему, которое включает данные средства визуализации элементов, а затем добавляет прослушиватель для этого события (либо в компоненте, который расширяет список, либо в компоненте, содержащем ваш список). Затем вы можете проверить, соответствуют ли данные какому-либо из selectedItems вашего списка. Если нет, добавьте элемент в selectedItems. Если да, удалите его из selectedItems. Надеюсь, это поможет.

person Wade Mueller    schedule 14.12.2010