1

我正在使用 Flex/Air 开发 iPad 应用程序。我在自定义列表项渲染器中遇到数据绑定问题。

我有一个包含类集合的列表作为数据提供者。每个类都启用了一个静态属性。我使用项目渲染器显示每个类,在启用 Class 属性时启用我的项目渲染器。

这些类看起来像这样:

public class MyClass
{
   public static const var name:String = "My Class";
   private static var enabled:Boolean = false;


   [Bindable]
    public static function get enabled():Boolean
    {
        return enabled;
    }

    public static function set enabled(value:Boolean):Boolean
    {
        enabled = value;
    }

}

然后我有清单:

<list dataProvider={new ArrayCollection([MyClass])} itemRenderer="CustomItemRenderer"/>

CustomItemRenderer 看起来像这样:

<s:ItemRenderer autoDrawBackground="false" enabled={data.enabled}>

   <s:label text={data.name}/>

<s:/ItemRenderer>

因此,当我更改 MyClass 的启用属性时,列表不会更新。项目渲染器仍处于禁用状态。

MyClass.enabeled = true;

你知道问题可能是什么吗?

先感谢您!伊万

4

1 回答 1

1

试试这个(我在没有IDE的情况下编辑了代码,应该是正确的想法):

// to dispatch a custom event your class needs to extends the EventDispatcher Class.
public class MyClass extends EventDispatcher
{
   public static const var name:String = "My Class";
   private static var _enabled:Boolean = false;


    // getter & setter with dispatchEvent could not be static...
    // instead the getter/setter for enabled, will change the static _enabled value.    
   [Bindable(event="enabledChange")]
    public function get enabled():Boolean
    {
        return _enabled;
    }

    public function set enabled(value:Boolean):void
    {
        _enabled = value;
        dispatchEvent(new Event("enabledChange"));
    }

}
于 2013-05-18T10:12:10.713 回答