2010-06-15 2 views
2

Как получить доступ к элементу списка itemRenderer и его свойствам (Spark - Flex 4)? Я хочу перебрать список и сделать что-то вроде (обратите внимание, что это псевдо-код):Acess itemRenderer в списке

for (var i=0;i<NUMBER_OF_ITEMS_IN_LIST; i++){ 
    myList.getItemRenderer[i].property 
} 

ответ

3

Какой тип обработки вы хотите выполнить на рендереров? Я подозреваю, что такой цикл не даст вам то, что вам нужно.

Рендереры создаются только для элементов, которые вы видите на экране. Для каждого элемента вашего DataProvider не будет рендерера. Это делается для производительности. Вы должны иметь доступ к средствам просмотра List через некоторое свойство API, но оно может быть не публичным или не документированным. Я быстро посмотрел и не мог сказать.

В Halo ListBase есть защищенные свойства с именем reservedItemRenderers и freeItemRenderers. Я предполагаю, что они должны быть чем-то похожим в Spark List.

+0

Вы правы, средства визуализации предназначены только для видимых элементов, и я не могу делать то, что хотел. Единственный способ сделать то, что я хотел, - это получить доступ к датапараудеру списка вместо itemrenderers. – dede

4

Итерация над ItemRenderers в Spark проста. Просто перетащите элементы в list.dataGroup, и вы в порядке.

if (list && list.dataGroup) { 
var i:int, numItems:int = list.dataGroup.numElements; 
for(i= 0;i < numItems; i++){ 
    var itemRendererItem:IItemRenderer = list.dataGroup.getElementAt(i) as IItemRenderer; 
} 
}