mx.controls.listClassesIDropInListItemRenderer Интерфейс для средств визуализации вставных элементов. Интерфейс для средств визуализации вставных элементов. Большинство элементов IListItemRenderers не являются вставными. Они предполагают использование определенного поля элемента поставщика данных. Например, они могут присваивать свойство элемента lastName свойству метки text. Эту операцию проще всего описать с помощью привязки данных, но при этом средство визуализации будет невозможно использовать в других столбцах сетки данных или другого списка с другими полями. Элемент IDropInListItemRenderer допускает повторное использование средства визуализации. Классы списка будут передавать больший объем данных в средство визуализации элементов, что позволит ему определить поле, используемое во время выполнения.

Компоненты, которые необходимо использовать в качестве средств визуализации или редакторов вставных элементов, должны реализовывать интерфейс IDropInListItemRenderer. Многие компоненты Flex реализуют данный интерфейс и поэтому могут быть использованы в качестве средств визуализации или редакторов вставных элементов в любом столбце или списке.

Средства визуализации или редакторы вставных элементов также должны реализовывать интерфейс IDataRenderer, определяющий свойство data.

Если компонент используется в качестве средства визуализации или редактора вставных элементов, то Flex инициализирует свойство компонента listData соответствующими данными из элемента управления списка. Затем компонент может использовать свойство listData для инициализации свойства data средства визуализации или редактора вставных объектов.

Свойство listData имеет тип BaseListData, а класс BaseListData имеет четыре подкласса: DataGridListData, ListData, TreeListData и MenuListData. Текущий тип данных значения свойства listData зависит от элемента управления, который использует средство визуализации или редактор вставных объектов. Для элемента управления DataGrid значение имеет тип DataGridListData, для элемента управления List – тип ListData, для элемента управления Tree – тип TreeListData, а для элемента управления Menu – тип MenuListData.

В следующем примере показан метод установщика для свойства data элемента управления NumericStepper, которое инициализирует свойство NumericStepper value в зависимости от значения свойства listData:

    public function set data(value:Object):void
    {
      _data = value;
    
      this.value = _listData ? parseFloat(_listData.label) : Number(_data);
    
      dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
    }
  

В приведенном выше примере элемент управления NumericStepper игнорирует свойство data при задании свойства NumericStepper value и использует вместо него свойство listData.

Для реализации интерфейса IDropInListItemRenderer следует определить методы установщика и получателя, которые реализуют свойство listData. Метод установщика обычно записывает значение свойства listData во внутреннюю переменную. Класс списка обычно присваивает это значение, а затем устанавливает элемент поставщика данных в свойстве data.

Обратите внимание на то, что метод установщика для свойства listData не осуществляет передачу событий. Это обусловлено тем, что классы списка всегда задают свойство listData, а затем – свойство data. Задание свойства data также влечет за собой передачу события dataChange. Свойство listData никогда не задается отдельно, поэтому необходимость в передаче собственного события отсутствует.

Метод установщика data может вызвать метод invalidateProperties(), если в ходе его выполнения возникает необходимость в обновлении элемента управления. Разработчик компонента должен предусмотреть метод commitProperties(), который обнаруживает изменение свойства listData и выполняет соответствующие действия.

Метод получателя возвращает текущее значение внутренней переменной, как показано в следующем примере:

    // Internal variable for the property value.
    private var _listData:BaseListData;
    
    // Make the listData property bindable.
    [Bindable("dataChange")]
    
    // Define the getter method.
    public function get listData():BaseListData
    {
      return _listData;
    }
    
    // Define the setter method,
    public function set listData(value:BaseListData):void
    {
      _listData = value;
    }
  
mx.controls.listClasses.BaseListDatamx.core.IDataRendererlistData Реализует свойство listData с помощью методов установщика и получателя.mx.controls.listClasses:BaseListData Реализует свойство listData с помощью методов установщика и получателя.
BaseListData Класс TreeListData определяет тип данных свойства listData, реализуемого средствами визуализации или редакторами вставных элементов.flash.events:EventDispatcher Класс TreeListData определяет тип данных свойства listData, реализуемого средствами визуализации или редакторами вставных элементов. Все средства визуализации вставных элементов или редакторы вставных элементов должны реализовать интерфейс IDropInListItemRenderer, определяющий свойство listData.

Свойство listData имеет тип BaseListData. Класс BaseListData содержит три подкласса: DataGridListData, ListData и TreeListData. Текущий тип данных значения свойства listData зависит от элемента управления, который использует средство визуализации или редактор вставных объектов. Для элемента управления DataGrid значение имеет тип DataGridListData, для элемента управления List – тип ListData, а для элемента управления Tree – тип TreeListData.

При использовании в качестве средства визуализации или редактора вставных элементов Flex устанавливает свойство listData равным производному от BaseListData классу, который содержит вычисленные данные об элементе в его источнике данных.

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

Свойства отмечены как связываемые, но фактически они не выполняют обнаружения изменений или отправку событий изменения. Свойства изменяются в целом путем установки нового значения для свойства listData. Событие change для видоизменения свойства listData обновляет все привязки.

mx.controls.listClasses.IDropInListItemRendererBaseListData Конструктор.labelТекстовое представление данных элемента. uidУникальный идентификатор. ownermx.core:IUIComponentСсылка на элемент управления List. rowIndex0Индекс строки из числа видимых в настоящий момент строк элемента управления. columnIndex0Индекс столбца в видимых в настоящий момент столбцах элемента управления. Конструктор. columnIndex Индекс столбца элемента управления, основанного на списке, по отношению к видимым в данный момент столбцам элемента, где первый столбец имеет индекс 1. Индекс столбца элемента управления, основанного на списке, по отношению к видимым в данный момент столбцам элемента, где первый столбец имеет индекс 1. label Текстовое представление данных элемента на основе метода класса списка itemToLabel(). Текстовое представление данных элемента на основе метода класса списка itemToLabel(). owner Ссылка на объект списка, которому принадлежит данный элемент.mx.core:IUIComponent Ссылка на объект списка, которому принадлежит данный элемент. Этот класс должен быть производным от ListBase. Данное свойство введено как IUIComponent, что делает необязательным наличие зависимостей по отношению к списку и всем зависимым от него объектам для вставных элементов (например, Label и TextInput). rowIndex Индекс строки элементов управления DataGrid, List или Tree по отношению к видимым в настоящий момент строкам элемента управления, где индекс первой строки равен 1. Индекс строки элементов управления DataGrid, List или Tree по отношению к видимым в настоящий момент строкам элемента управления, где индекс первой строки равен 1. Например, пользователь щелкает строку в элементе управления, и свойство rowIndex устанавливается равным 3. Затем в элементе управления выполняется прокрутка для изменения позиции строки в видимой области элемента. Затем пользователь еще раз щелкает описанную строку. Свойство rowIndex теперь содержит другое значение, соответствующее новому индексу строки по отношению к видимым строкам. uid Уникальный идентификатор для этого элемента. Уникальный идентификатор для этого элемента.
IListItemRenderer Средства визуализации и редакторы элементов для компонентов списка должны реализовывать интерфейс IListItemRenderer.mx.core:IDataRendererflash.events:IEventDispatchermx.core:IFlexDisplayObjectmx.managers:ILayoutManagerClientmx.styles:ISimpleStyleClientmx.core:IUIComponent Средства визуализации и редакторы элементов для компонентов списка должны реализовывать интерфейс IListItemRenderer. Интерфейс IListItemRenderer является набором других интерфейсов. Он не определяет новые методы или свойства класса.

В набор интерфейсов входят: IDataRenderer, IFlexDisplayObject, ILayoutManagerClient, ISimpleStyleClient, IUIComponent. Класс UIComponent реализует все эти интерфейсы, за исключением интерфейса IDataRenderer. Поэтому при создании пользовательского средства визуализации или редактора элементов как подкласса для класса UIComponent следует реализовать только интерфейс IDataRenderer. Затем можно добавить к определению класса, что класс реализует IDataRenderer и IListItemRenderer.

IListItemRenderers, как правило, используются для отображения определенного поля из элемента поставщика данных и не могут быть повторно использованы в других столбцах DataGrid или в других списках с разными полями. При создании средства визуализации, которое может быть повторно использовано, можно также реализовать IDropInListItemRenderer, и список передаст большее количество данных средству визуализации, что позволит повторно использовать средство визуализации с другими полями данных.

Средства визуализации и редакторы элементов являются данными, передаваемыми от поставщика данных класса списка с помощью интерфейса IDataRenderer. Средства визуализации и редакторы, реализующие интерфейс IDropInListItemRenderer, получают другую информацию из класса списка. Средство визуализации или редактор элементов использует один или оба набора информации для отображения данных.

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