我有一个包含多个字段的类,其中只有一个我希望在ListView中显示
class FOO {
String f1;
String f2;
String f3;
};
FOO foo = new FOO;
FOO [] fooArray = new FOO[5];
我使用标准的ArrayAdapter来显示它,并将foo.f1添加为要在ListView中显示的字段。我当然可以在foo.f1上排序。我现在需要能够对foo.f2或foo.f3进行排序。我可以构建一个自定义的ArrayAdapter,它将foo作为其元素,但只显示foo.f1。然后我可以访问foo.f2和foo.f3并可以对这些字段进行排序。有没有更简单的方法来做到这一点,而无需创建自定义ArrayAdapter?
在ArrayAdapter之外可以使用foo元素数组,我可以对它进行排序,从ArrayAdapter中删除所有元素,然后以新的排序方式重新添加它们,但是我想使用sort函数ArrayAdapter。
欢迎任何指示。
答案 0 :(得分:1)
ArrayAdapter.sort
将Comparator
个对象作为参数。因此,您可能有三个不同的比较器或参数化比较器,并根据需要对项目进行排序。
Comparator<FOO> f1 = new Comparator<FOO>(){
@Override
public int compare(FOO lhs, FOO rhs) {
return lhs.f1.compareTo(rhs.f1);
}
};
Comparator<FOO> f2 = new Comparator<FOO>(){
@Override
public int compare(FOO lhs, FOO rhs) {
return lhs.f2.compareTo(rhs.f2);
}
};
...
myListAdapter.sort(F1);
myListAdapter.sort(F2);