【发布时间】:2014-05-07 17:24:29
【问题描述】:
标题基本上说明了我的问题。我正在对 dataProvider 进行排序以获取列表。我在列表中有 itemRenderers。构建了 3 个项目,opt1、opt2、opt3 - 然后我在列表上进行拖放,完成后我等待在列表的 dataProvider 中设置我的自定义 newRank 变量。然后在对列表进行排序后,我的项目渲染器会呈现 5 个项目,而不是 3 个:opt2、opt3、opt1(前三个已正确排序)、opt3、opt3。 我尝试使用基本排序和 customFunction 进行排序,但无法正确排序。任何帮助,将不胜感激。
public function sortItemsByNewRank():void{
var srt:Sort = new Sort();
//srt.fields = [new SortField("newRank", true, false, true)];
srt.compareFunction = myCompare;
var ac:ArrayCollection = this.dataProvider as ArrayCollection;
ac.sort = srt;
ac.refresh();
}
private function myCompare(a:Object, b:Object, fields:Array = null):int {
LOG.debug("ExtendedList a and b: "+a.newRank+" "+b.newRank);
if(a.newRank == b.newRank) {
return 0;
} else if(a.newRank > b.newRank) {
return 1;
} else{
return -1;
}
}
【问题讨论】:
-
我认为排序确实有效。刷新后绘制 dataProvider 的 List 组件不起作用。它正在复制项目,我尝试调用 invalidateDisplayList 和 invalidateList 来让列表重绘自身,但它什么也没做。
标签: apache-flex flex3