Flex如何解决flex滚动条后重新渲染
我在tilelist里面渲染了checkbox,然而checkbox多了,出现滚动条后,我选中第一个checkbox后,下拉滚动条就出现了乱选中现象。不知道怎么解决希望高...
我在tilelist里面渲染了checkbox,然而 checkbox多了,出现滚动条后,我选中第一个checkbox后,下拉滚动条 就出现了乱选中现象。不知道怎么解决 希望高手帮帮我感谢啊
展开
3个回答
展开全部
重写checkbox。。原因是flex不记录不显示的数据,这样减少性能消耗
下面是重写的checkbox,记得改包名
package cn.com.ooneg.keyword
{
import flash.events.Event;
import mx.controls.CheckBox;
public class CheckboxItemRanderer extends CheckBox{
public function CheckboxItemRanderer() {
super();
this.addEventListener('change', changeHandler);
}
private var _data:Object;
override public function get data():Object {
return _data;
}
override public function set data(value:Object):void {
_data = value;
if(_data && _data['selected']){
this.selected = true;
}else{
this.selected = false;
}
}
private function changeHandler(event:Event):void{
_data['selected'] = this.selected;
}
}
}
下面是重写的checkbox,记得改包名
package cn.com.ooneg.keyword
{
import flash.events.Event;
import mx.controls.CheckBox;
public class CheckboxItemRanderer extends CheckBox{
public function CheckboxItemRanderer() {
super();
this.addEventListener('change', changeHandler);
}
private var _data:Object;
override public function get data():Object {
return _data;
}
override public function set data(value:Object):void {
_data = value;
if(_data && _data['selected']){
this.selected = true;
}else{
this.selected = false;
}
}
private function changeHandler(event:Event):void{
_data['selected'] = this.selected;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用list的itemrenderder把checkbox加入titelist中,在itemrenderer的Class中加入一个Boolean变量,使用该变量的setter方法判断是否使checkBox显示为被check的状态。在list数据变化(或初始化)的时候,只需要设置这个变量的值就可以把checkbox设置成check或非check状态了。在滚动条滚动的时候,由于该变量的值是不变的,因此,你的checkbox也不会变(本人曾用此法成功处理过list被选择行变色的滚动问题,感觉和你的问题类似)。
由于list相关类型(List或DataGrid等)的滚动条的滚动会导致itemrenderer重画,因此乱选的原因是在于list本身,而不在checkbox,本人认为lz的方法未必能解决问题。由于list是根据data来滚动重画renderder的,所以只有通过数据的方式来解决这个问题。
由于list相关类型(List或DataGrid等)的滚动条的滚动会导致itemrenderer重画,因此乱选的原因是在于list本身,而不在checkbox,本人认为lz的方法未必能解决问题。由于list是根据data来滚动重画renderder的,所以只有通过数据的方式来解决这个问题。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是渲染器的bug 自己搜去吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询