0

我有一个包含多个字段的类,我只想在 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 进行排序。我可以构建一个将 foo 作为其元素的自定义 ArrayAdapter,但只显示 foo.f1。然后我可以访问 foo.f2 和 foo.f3 并且可以对这些字段进行排序。有没有更简单的方法可以做到这一点,而不必创建自定义 ArrayAdapter?

foo 元素的数组在 ArrayAdapter 之外可用,我可以对其进行排序,从 ArrayAdapter 中删除所有元素,然后以新的排序方式重新添加它们,但我想使用 ArrayAdapter 的排序功能。

欢迎任何指针。

4

1 回答 1

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);

于 2013-10-22T21:14:28.680 回答