2015-02-05 44 views
0

請幫我解決這個問題。我一直在嘗試編寫不同的比較器,並且它們都不能正常工作。ArrayList比較器<Object>無法正常工作

他們喜歡按部分分類。讓事情象值:0, 4, 1, 9 , 18, 3, 18, 9.

它排序是這樣的:9, 9, 0, 1, 3, 18, 18, 4.

有些「受命」隨機我會說。

請幫助找到我做錯了什麼。

類數據和Comparator

public class CoursesData { 
private String url; 
private String name; 
private String lessonsCount; 
private String isFree; 
private String price; 
private String language; 
private String difficulty; 

private AuthorData author; 

public static Comparator<CoursesData> CoursesDataPriceComparator = new Comparator <CoursesData>() { 
    public int compare (CoursesData left, CoursesData right){ 
     return right.getPrice().compareTo(left.getPrice()); 
    } 
}; 

....(getter-setters) 

怎麼我用這個比較:

ArrayList<CoursesData> coursesDatas = parserJson.getCourses(); 
    Collections.sort(coursesDatas, CoursesData.CoursesDataPriceComparator); 
    mAdapter = new CoursesItemAdapter(getActivity(), 
      R.layout.catalog_list_item, coursesDatas); 

價格是字符串,但使用的數字值。也許它的問題...

感謝您的任何幫助。

+2

*也許它的問題*。它實際上是。你可以使用'Integer.parseInt'來獲得實際的'int',並在這些 – Blackbelt 2015-02-05 15:27:23

回答

1

更換

return right.getPrice().compareTo(left.getPrice()); 

return new Double(right.getPrice().trim()).compareTo(
    new Double(left.getPrice().trim()) 
); 
+2

之間進行比較,我將使用Double而不是Integer,只是爲了覆蓋所有數字範圍。 – Serhiy 2015-02-05 14:43:16