如何在实现Parcelable时对ArrayList进行排序

我试图用Collections.sort方法对类别arraylist进行排序,但没有运气。

这是我的代码:

 public class Categories implements Parcelable { private ArrayList category; private Recent recent; public ArrayList getCategories() { return this.category; } public void setCategory(ArrayList category) { this.category = category; } public Recent getRecent() { return this.recent; } public void setRecent(Recent recent) { this.recent = recent; } protected Categories(Parcel in) { if (in.readByte() == 0x01) { category = new ArrayList(); in.readList(category, Category.class.getClassLoader()); } else { category = null; } recent = (Recent) in.readValue(Recent.class.getClassLoader()); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { if (category == null) { dest.writeByte((byte) (0x00)); } else { dest.writeByte((byte) (0x01)); dest.writeList(category); } dest.writeValue(recent); } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override public Categories createFromParcel(Parcel in) { return new Categories(in); } @Override public Categories[] newArray(int size) { return new Categories[size]; } }; } 

您还可以使用自定义比较器:

 public class CategoriesComparator implements Comparator { @Override public int compare(Category category1, Category category2) { return category1.getSomeProperty().compareTo(category2.getSomeProperty()); } } 

当你想比较这个时:

 Collections.sort(yourListCategories, new CategoriesComparator()); 

希望能帮助到你!

 Collections.sort(yourListHere,new Comparator() { @Override public int compare(Categories lhs, Categories rhs) { //your sort logic here return 0; } }); 

希望这可以帮助。