从DataProvider中删除项目导致ERROR 1009

时间:2014-01-26 11:56:18

标签: actionscript-3 flex runtime-error dataprovider flash-builder4.5

这是一个基于视图的Android项目,使用Flash Builder 4.5

在我的views.ListView中,我有一个像这样的列表元素 <s:List id = "myList" itemRenderer="components.myCustomRenderer" dataProvider="{Global.itemArrayList}"> </s:List>

Global是我用来存储所有视图的共享值的类

myCustomRenderer列表中有deleteButton点击后,执行以下功能

public function deleteButtonnHandler(event:MouseEvent):void {
    var removeItem:myItem = super.data as myItem;
        this.parentApplication.navigator.activeView.myList.dataProvider.removeItem(removeItem);
    }

它还会覆盖设置数据函数,如下所示

override public function set data(value:Object):void {
        super.data = value;
        nameText.text = value.name;
    }

当我单击deleteButton时,我得到ERROR#1009,表示行nameText.text = value.name访问空对象的属性

我尝试直接从Global.itemArrayList删除该项,但会发生同样的错误。这是我第一次处理自定义ItemRenderer和List,因此我不理解在删除项目时调度的事件。跟踪错误消息,我看到调度了某种dataProvider更改事件但是为什么导致错误我不知道。

除了此错误,我的渲染器和列表工作正常。

有些人帮助我阐明这个问题,并且非常感激地解决这个问题。

由于

1 个答案:

答案 0 :(得分:1)

如果您按以下方式更新setter data,则应避免错误1009:

override public function set data(value:Object):void {
    super.data = value;
    if (value) {
        nameText.text = value.name;
    } else {
        nameText.text = "";
    }       
}