自定义ListAdapter不显示所有字段

时间:2013-10-22 20:29:53

标签: java android listview

我有一个包含多个字段的类,其中只有一个我希望在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。

欢迎任何指示。

1 个答案:

答案 0 :(得分:1)

ArrayAdapter.sortComparator个对象作为参数。因此,您可能有三个不同的比较器或参数化比较器,并根据需要对项目进行排序。

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