Запретить выбор определенного элемента в списке искры - PullRequest
2 голосов
/ 24 сентября 2011

У меня есть Spark List, в котором есть пользовательский itemRenderer для рендеринга каждого элемента в списке. Я хочу, чтобы элемент в этом списке не был выбран (на основе некоторой пользовательской логики) пользователем.

Как лучше всего этого достичь?

Вот как определяется мой список:

<s:List id="myList" itemRenderer="com.sample.MyItemRenderer" />

и, конечно, у меня есть средство визуализации элементов, определенное как класс com.sample.MyItemRenderer.

1 Ответ

3 голосов
/ 26 сентября 2011

Насколько я знаю, выбор элементов обрабатывается одним списком, поэтому я бы сказал, что вы можете управлять этим оттуда. Я хотел бы иметь поле для объектов, которые находятся в списке, с именем «выбираемый» или что-то в этом роде, и когда элемент списка меняется, проверьте, действительно ли новый элемент можно выбрать, а если нет, то вы можете его иметь очистить выбор или сбросить предыдущий выбор. Это можно сделать, отреагировав на событие «change» в компоненте списка и вызвав «warnDefault» в IndexChangeEvent следующим образом:

protected function myList_changingHandler(event:IndexChangeEvent):void {
    var newItem:MyObject = myList.dataProvider.getItemAt(event.newIndex) as MyObject;
    if(!newItem.selectable) {
        event.preventDefault();
    }
}

// Jumping ahead ...

<s:List id="myList" changing="myList_changingHandler(event)" // ... continue implementation

Соответствующая часть класса MyObject выглядит следующим образом:

public class MyObject {

    private var _selectable:Boolean;

    public function MyObject(){

    }

    public function set selectable(value:Boolean):void {
        _selectable = value;
    }

    public function get selectable():Boolean {
        return _selectable;
    }
}
...