我有类别ArrayList,它传递给标签。标签获取类别名称并进行设置。
private List<Category> mCategories;
private LayoutInflater mInflater;
public LeftMenuAdapter(Context context, List<Category> categories) {
mCategories = categories;
mInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
Category category = mCategories.get(position - 3);
holder.label.setText(category.getName());
类别类:
public class Category implements Parcelable {
private List<String> images;
private String name;
public List<String> getImages() {
return this.images;
}
public void setImages(List<String> images) {
this.images = images;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
protected Category(Parcel in) {
if (in.readByte() == 0x01) {
images = new ArrayList<String>();
in.readList(images, String.class.getClassLoader());
} else {
images = null;
}
name = in.readString();
}
@Override
public int describeContents() {
return 2;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
if (images == null) {
dest.writeByte((byte) (0x00));
} else {
dest.writeByte((byte) (0x01));
dest.writeList(images);
}
dest.writeString(name);
}
public static final Parcelable.Creator<Category> CREATOR = new Parcelable.Creator<Category>() {
@Override
public Category createFromParcel(Parcel in) {
return new Category(in);
}
@Override
public Category[] newArray(int size) {
return new Category[size];
}
};
}
我使用了比较器,但它说Cannot resolve symbol sort
。如何按名称对类别进行排序?
答案 0 :(得分:3)
同样定义一个类,
class SortByNameCategory implements Comparator<Category>{
@Override
public int compare(Category c1, Category c2) {
return (c1.getName() != null ? c1.getName().compareTo(c2.getName())).compareTo(c2.getName() : 0);
}
}
......在其他地方..
List<Category> listofCategory = new ArrayList<Category>();
// populate this listofCategory as per your wish...
java.util.Collections.sort(listofCategory , new SortByNameCategory()); // this will sort your listofCategory by Category's Name base
答案 1 :(得分:3)
public class CategoryComparator implements Comparator<Category> {
@Override
public int compare(Category o1, Category o2) {
if(o1.getName()!=null && o2.getName()!=null){
return o1.getName().compareToIgnoreCase(o2.getName());
}else{
return 0;
}
}
}
答案 2 :(得分:2)
您必须在Comparable
课程中实施Category
界面并覆盖compareTo()
方法。
答案 3 :(得分:2)
您需要创建自定义比较器
public class CustomComparator implements Comparator<MyObject> {
@Override
public int compare(MyObject o1, MyObject o2) {
return o1.getStartDate().compareTo(o2.getStartDate());
}
}
并比较arrayList中的对象:
Collections.sort(arrayList, new CustomComparator());
答案 4 :(得分:1)
所以你的问题就是排序并不知道如何处理类。你必须创建类别,但你必须编写一个方法来告诉究竟要排序的内容。 如果您的类包含字符串,则使用比较器并根据起始字符或您喜欢的任何类型对其进行排序 与int和一切相似。 目前,如果您在列表中调用sort,则无法知道如何处理您的课程。