2012-10-04 128 views
1

(我繼承了一個Flex/AIR項目,它已經有一段時間,因爲我使用Flex的工作所以請原諒我,如果這是一個基本的問題)智能排序爲Tree組件

我有一個Flex/AIR項目,它加載圖像文件名稱的目錄並將它們呈現在Tree組件中。用戶可以點擊文件名來顯示圖像。

我很困惑爲什麼在(OSX)目錄視圖的Flex Tree組件視圖中排序(文件名的順序)不同。 OSX正在做一些聰明的事情,並對數字和alpha值進行排序。 Flex Tree並不如此聰明......正如下面的屏幕截圖所示。

我一直在尋找火花排序和SortField集合,但我不清楚,但我可以如何使用這些。是否有一種簡單的解決方案來進行我需要的排序:一種告訴Flex考慮文件名的數字部分的方法?

更新:

猜猜我是打獵斯納克..被稱爲 「自然排序」(sorting-for-humans-natural-sort-order) ...

enter image description here enter image description here

+0

OS X finder是否有可能按日期進行排序,並且這些文件是以'數字順序'創建的,因此會產生看起來像您所描述的排序?我發現OS X finder不太可能在數字上對部分名稱進行排序。 – GreyBeardedGeek

+0

@GreyBeardedGeek - 謝謝你的回覆。我很確定它是在數字和alpha上進行排序,然後再次檢查(並更新了屏幕快照以顯示它)。它按名稱排序,但智能處理Doc1和Doc11等。很酷 - 但現在的客戶也希望我也這樣做:-) –

+1

剛剛在OS X上試了一下 - 是的,很酷 - 我沒有意識到它做到了。我能想到的唯一辦法是將每個文件名解析爲文本和數字字段,然後按第一個字段進行主要排序,第二個排序進行排序,每個排序都是字母或數字,根據「字段」的類型,我認爲,在數字類型不同的情況下,在數字之前進行alpha排序。 – GreyBeardedGeek

回答

0

功能排序 '自然'已經存在於as3-commons-lang項目中。在StringUtils類中,查找naturalCompare()函數。

現在所有剩下的工作就是將其應用於層次結構中的所有集合。您必須遞歸循環遍歷樹中的所有節點,並對每個節點的children應用排序函數。

+0

謝謝 - 昨天晚上我發現,在瞭解了那種「排序」的調用之後,我發現這個更簡單的實現:* as3natcompare *(http://code.google.com/p/as3natcompare/)。 –

+0

@skinnyTOD是的,我注意到as3-commons版本是[Java one]的一個確切的端口(http://www.java2s.com/Code/Java/Collections-Data-Structure/NaturalOrderComparator.htm):有意義有改進的餘地。 – RIAstar