我正在使用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;
你知道问题是什么吗?
提前谢谢! 伊万
答案 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"));
}
}