DataBinding在自定义列表itemrenderer中无法正常工作

时间:2013-05-17 12:41:55

标签: ipad flex mobile air

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

我列出了一组Classes作为数据提供者。 每个类都启用了静态属性。我使用项呈示器显示每个类,其中启用了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的enabeled属性时,列表不会更新。 项目渲染器仍然被取消。

MyClass.enabeled = true;

你知道问题是什么吗?

提前谢谢! 伊万

1 个答案:

答案 0 :(得分: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"));
    }

}