List通过DataGroup获取ItemRenderer

来源:互联网 发布:上海市gis数据 下载 编辑:程序博客网 时间:2024/06/05 17:51

1.  数据多于显示的时候

用List的dataprovider 可能含有100项数据,c_list.dataGroup.numElements是100。但是屏幕显示不下,list有一定高度,只能显示4项。

c_list.dataGroup.getChildAt(i)能得到的,多于显示的,少于总的数据。可能是有8个itemrender。

按显示的从上到下排列。可能第0个-第4个itemrenderer  visible = false, 第5个开始才可见。


2.数据少于可显示,且有改动

list先显示了4个数据,会初始化4个itemrenderer。

再通过dataprovider改为2个数据。只有序号为2、3的2个itemrenderer显示,并赋予了新的data。

序号为0、1的两个itemrenderer,y会变成0,visible变为false,隐藏掉。



3.需求:通过list控件更改数据,改完后commit。提交的函数写在itemrender中,也就是说是逐项提交的。

按提交后,对显示的itemrenderer逐项提交。
try{var i:uint = 0;var pir:ParamItemRenderer = c_list.dataGroup.getChildAt(i) as ParamItemRenderer;while(pir){if(pir.visible = true){pir.commit();}i++;pir = c_list.dataGroup.getChildAt(i) as ParamItemRenderer;}}catch(e:RangeError){}


然后itemrenderer中监听hide事件,有格子visible改成false的时候马上提交。
itemrenderer中  hide="itemrenderer1_hideHandler(event)"  里面调用commit。


原创粉丝点击