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中,也就是说是逐项提交的。
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。