Flex 4 - выберите и отмените выбор одного и того же элемента в <s: List> с помощью mousedown

Во 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 на окнах.

2 ответа

Решение

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

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

Другие вопросы по тегам