時被複制標題基本上告訴我的問題。我正在對dataProvider進行排序以獲取列表。 itemRenderers在列表中。 3項內置,opt1,opt2,opt3 - 然後我有一個拖放列表,當完成後,我等待我的自定義newRank變量設置在列表的dataProvider中。然後排序列表後,我的項目渲染器渲染出5項,而不是3:opt2,opt3,opt1(前三個排序正確),opt3,opt3。 我試圖用基本排序和自定義函數進行排序,但無法正確排序。任何幫助,將不勝感激。列表ItemRenderer在分類列表的數據提供者
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;
}
}
我認爲這種排序實際上是有效的。不工作的是List組件在刷新後繪製dataProvider。它是複製項目,我試圖調用invalidateDisplayList和invalidateList來獲取列表重繪本身,但它什麼都不做。 – tcoulson