Adobe Flex 2语言参考:
IDropInListItemRenderer接口
用于“drop-in”item renderers的接口。大多数IListItemRenderers并不是“drop-ins”。而是被期望用作data provider item的详细的字段。例如,分配item的lastName属性给Label的text属性。若使用数据绑定这是容易的,但是有负作用,在另一个DataGrid的列或者带不同字段的另一个List时,这个renderer不能被重用。IDropInListItemRenderer允许一个renderer被重用。这个list类将会传递更多的信息到renderer以至它能在运行时决定使用哪个字段。
你想作为drop-in item renderers 或drop-in item editor使用的组件必须实行IDropinListItemRenderer接口。许多Flex组件实现这个接口,所以可直接用作drop-in renderers 和drop-in item editors在任何列表或类中。
Drop-in item renderers 或drop in item editors也必须实现IDataRenderer接口来定义data属性。
当一个组件被用作drop-in item renderer或drop-in item editor,Flex从list控件来初始化组件的listData属性为适当的数据。组件能用listData属性来初始化drop-in item renderer或drop-in item editor的data属性。
这listData属性为BaseListData类型,BaseListData类有三个子类:DataGridListData,ListData,和TreeListData。而listData属性实际的数据类型依赖于drop-in item renderer或item editor在使用的控件。对一个DataGrid控件,类型的值是DataGridListData类型,对于List控件是ListData类型,对Tree控件是TreeListData类型。
下边的例子展示了setter方法用于NumericStepper控件的data属性,初始化NumbericStepper的value属性基于listData属性的值。
public function set data(value:Object):void
{
_data = value;
this.value = _listData ? parseFloat(_listData.label) : Number(_data);
dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
}
在上面的例子中,NumericStepper控件忽略data属性当设置NumericStepper的value属性,并使用listData属性替代。
为了实现IDropInListItemRenderer接口,你定义一个setter和getter方法来实行listData属性,典型地,setter方法将listData的值写到一个内部变量。这list类总是分配这个属性,然后设置在data属性中设置data provider item。许多实现激活listData 在data的setter中,或在commitPorperties()方法中,因为data的setter方法调用invalidateProperties()方法,或在dataChange事件响应处理时,因为data的setter会分发这个事件。getter方法返回该内部变量当前的值,象下面的例子展示的:
// Internal variable for the property value.
private var _listData:BaseListData;
// Make the listData property bindable.
[Bindable("dataChange")]
// Define the getter method.
public function get listData():BaseListData
{
return _listData;
}
// Define the setter method,
public function set listData(value:BaseListData):void
{
_listData = value;
}
阅读(1248) | 评论(1) | 转发(0) |