list里面渲染了checkbox,然而 checkbox多了,出现滚动条后,我选中第一个checkbox后,下拉滚动条 就出现了乱选中现象。
用list的itemrenderder把checkbox加入list中,在itemrenderer的Class中加入一个Boolean变量,使用该变量的setter方法判断是否使checkBox显示为被check的状态。
在list数据变化(或初始化)的时候,只需要设置这个变量的值就可以把checkbox设置成check或非check状态了。在滚动条滚动的时候,由于该变量的值是不变的,
因此,你的checkbox也不会变(比如 list被选择行变色的滚动问题)。
? 由于list相关类型(List或DataGrid等)的滚动条的滚动会导致itemrenderer重画,
因此乱选的原因是在于list本身,而不在checkbox,由于list是根据data来滚动重画renderder的,所以只有通过数据的方式来解决这个问题。
下面是一个textInput的例子
<s:Group width="100%" height="100%">
<s:List id="lstFielsInput" width="100%" height="100%" verticalScrollPolicy="auto"itemRenderer="widgets.query2_0.view.FieldInputItemRenderer"
dataProvider="{_fieldListProxy.getData() as ArrayCollection}">
</s:List>
</s:Group>
=========================//渲染器文件========================
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
?? ??? ??? ??? ?xmlns:s="library://ns.adobe.com/flex/spark"
?? ??? ??? ??? ?xmlns:mx="library://ns.adobe.com/flex/mx"
?? ??? ??? ??? ?autoDrawBackground="true">
?? ?<fx:Script>
?? ??? ?<![CDATA[
?? ??? ??? ?import spark.events.TextOperationEvent;
?? ??? ??? ?protected function textinput1_changeHandler(event:TextOperationEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?data.value = TextInput(event.currentTarget).text;
?? ??? ??? ?}
?? ??? ?]]>
?? ?</fx:Script>
?? ?<s:HGroup width="100%" height="100%">
?? ??? ?<s:Label text="{data.label}" width="60" toolTip="{data.label}"/>
?? ??? ?<s:TextInput change="textinput1_changeHandler(event)"? width="150" text="{data.value}"/>
?? ?</s:HGroup>
</s:ItemRenderer>