【问题标题】:Remove Item from DataProvider causing ERROR 1009从 DataProvider 中删除项目导致 ERROR 1009
【发布时间】:2014-01-26 11:56:17
【问题描述】:

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

在我的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);
    }

它还覆盖了 set data 函数,如下所示

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

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

我尝试直接从Global.itemArrayList 中删除该项目,但出现同样的错误。这是我第一次处理自定义 ItemRenderer 和 List,所以我不明白当一个项目被很好地删除时调度的事件。跟踪错误消息,我看到某种 dataProvider 更改事件已发送,但至于为什么会导致错误,我不知道。

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

我们将非常感谢能帮助我阐明这个主题并解决这个问题。

谢谢

【问题讨论】:

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


    【解决方案1】:

    如果你用以下方式更新setter data,你应该避免错误1009:

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

    【讨论】:

    • 非常感谢,这比我想象的要简单得多。我想我遇到了一个问题,为什么即使 dataProvider 为空,setter 仍然被调用
    • 这可能是由于您直接从渲染器调用删除操作。
    猜你喜欢
    • 1970-01-01
    • 2018-02-13
    • 2014-08-15
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 2021-08-14
    相关资源
    最近更新 更多