按对象字段之一排序对象列表

时间:2015-01-31 15:04:42

标签: android list sorting object

我理解Collections.sort(list)可以为字符串列表工作,但是对象列表呢?假设我有这个对象Contact

public class Contact implements Serializable {

    private SerializableBitmap picture;
    private String name;
    private String location;

    public Contact() {

    }

    public void setPicture(SerializableBitmap picture) {
        this.picture = picture;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public SerializableBitmap getPicture() {
        return picture;
    }

    public String getName() {
        return name;
    }

    public String getLocation() {
        return location;
    }
}

然后我有一个这个对象的ArrayList。是否可以根据联系人姓名对列表进行排序?我试图用ListView填充它,但它应该按升序排列。

2 个答案:

答案 0 :(得分:1)

您需要实现以下

之类的自定义比较器
public class ContactComparator implements Comparator<Contact> {
    public int compare(Contact contact1, Contact contact2) {
        //In the following line you set the criterion, 
        //which is the name of Contact in my example scenario
        return contact1.getName().compareTo(contact2.getName());
    }
}

然后您只需要像这样调用它(在代码中您需要对联系人进行排序的任何地方):

Collections.sort(myContacts, new ContactComparator());

myContacts是您需要排序的联系人对象列表(您在问题中将其命名为列表)。

答案 1 :(得分:0)

如果要填充List,则应使用字符串[]填充它,然后按名称查找Contact以获取联系对象。然后你可以为listview排序字符串[]。

正如评论中所见,无论如何都需要创建一个新的对象字符串数组。它完全取决于你想要的方式。