实际上,我有一个Datagrid,每个行的单元格内有2个RadioButton控件。像这样:
======================================================
| | | (o) Radiobutton #1 |
| cell #1 | cell #2 | (o) Radiobutton #2 |
======================================================
如果我删除了一行并在此之后添加了另一行,Flex会自动重用之前删除的RadioButtons(以优化我认为的资源)。
将creationComplete
事件处理程序与每个RadioButton相关联我确认了我的嫌疑人:
creationComplete
处理程序都成功执行。creationComplete
处理程序没有执行,因此Flex正在使用以前的RadioButtons。但我不想在我的应用中出现这种行为。有没有办法强制Flex每次都创建组件(避免重用)?谢谢!
答案 0 :(得分:1)
But I don't want this behaviour in my app.
如果您关心性能和内存使用情况,那么您确实希望在您的应用中使用此行为。请阅读creating Renderers。请特别注意有关创建可回收渲染器的部分。
Is there any way to force Flex to create the components every single time (avoiding reuse)?
您可以调整DataGrid的大小,以便dataProvider中的每个项目都显示在屏幕上。
如果您正在使用Spark DataGrid,则很可能您可以在布局上设置属性以不使用虚拟布局;但我没有太多钻研Spark DataGrid API,所以我不确定它是否在那里。
我全心全意地建议您重新编写渲染器以侦听dataChange()事件并修改渲染器的显示元素(AKA RadioButton),而不是尝试为dataProvider的每个元素设置单个渲染器实例。
答案 1 :(得分:0)
在Flex 4 / spark列表中,您可以使用useVirtualLayout属性打开和关闭此属性(http://help.adobe.com/en_US/flex/using/WSc2368ca491e3ff92-1483ec4a12136246e76-8000.html)。但是,我不认为ADG还有一个火花版本,所以你对一个假设你关心内存和CPU使用率的组件“卡住”了,你不能告诉它。