以Bookmar 为例
如何实现 自定义的 列表?
flex 其实 是 实现了mvc
数据和显示分离 。
Bookmark 数据模型 pojo
[Bindable]
public class Bookmark
{
public var name:String;
public var icon:String;
public var userCreated:Boolean;
public var xmin:Number;
public var ymin:Number;
public var xmax:Number;
public var ymax:Number;
}
BookmarkItemRenderer 用于控制 一个 列表的 显示
在flex 中 要 新建 mxml 项呈视器 就可以建立 这个 mxml 文件了
在里面
最关键的事件是 dataChange="itemrenderer_dataChangeHandler(event)" 如果 dataChange 事件不写 ,一切 都不起作用。
到底写什么?
bookmark = data as Bookmark; 要把数据 强制类型转换成 Bookmark
这里bookmark 要绑定[Bindable]
[Bindable]
private var bookmark:Bookmark;
<s:Label left="30" right="40"
fontWeight="normal"
text="{bookmark.name}"
verticalCenter="0"/>
bookmark 的名字属性和 一个label 控件绑定
BookmarkDataGroup 这也是个容器 ,继承DataGroup ,没什么好说的 照抄就行了
public class BookmarkDataGroup extends DataGroup
{
public function BookmarkDataGroup()
{
super();
this.itemRenderer = new ClassFactory(BookmarkItemRenderer);
}
}
最后 是使用 BookmarkDataGroup
<Bookmark:BookmarkDataGroup
dataProvider="{bookmarkAL}">
<Bookmark:layout>
<s:VerticalLayout gap="2"
horizontalAlign="justify"
useVirtualLayout="true"/>
</Bookmark:layout>
</Bookmark:BookmarkDataGroup>
继承了DataGroup 之后 就有dataProvider 属性 这里 bookmarkAL 是[Bindable] 是Bookmark 数组。
终于理解了 自定义组件的使用了。