PDA

Просмотр полной версии : HorizontalList и removeItemAt()


MyChemic
07.05.2008, 18:59
Добрый день, использую HorizontalList с наполнением из ArrayCollection. HorizontalList является компонентом, который я добавляю в руте:


<mx:HorizontalList id="myList" itemRenderer="components.Frame" />
<mx:Script>
<![CDATA[
import mx.collections.*;
private var _this:Object;
private function initApp():void {
myList.addEventListener("itemDelete", onItemDelete);
_this = this.parent.parent;
}
private function onItemDelete(e:Event):void{
var r:Frame = e.target as components.Frame;
var targetIndex:int = myList.itemRendererToIndex(r);
myList.removeChildAt(targetIndex);
_this.mn.dataFrame.removeItemAt(targetIndex);
}
]]>
</mx:Script>


Но строчка, выделенная болдом удаляет у меня весь(!!!) компонент HorizontalList. Трейс targetIndex выдает правильное значение, то есть тот индекс, элемент которого надо удалить.

Дело в том, что у меня есть две кнопки, добавить элемент и удалить, добавляет хорошо, но если я удалю элемент, то из ArrayCollection он удаляется, а из HorizontalList нет, поэтому, когда я снова начинаю добавлять элементы, то визуально их не видно:

Пример:

я добавил 3 элемента:
[] [] []
и нажал удалить первый элемент. В коллекции я получаю:
[][]
а в HorizontalList
*[][] - то есть вместо звездочки что-то есть
и когда я снова добавляю один элемент, то я его не вижу, т.е.:
*[][]
а добавим потом еще один, то
*[][][]