以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 數組。
終於理解了 自定義組件的使用了。