我在android列表视图中使用适配器绑定类对象列表,列表视图有3个列标题(3个标题按钮),每个标题都有click事件,现在我想按列排序列表视图当我点击第一个标题列,相对于第一列排序的数据,我点击第二个标题按照第二列排序数据。我怎么能这样做。
答案 0 :(得分:2)
前面有大量伪代码,你已经收到警告了。
假设您有一个班级Foo
class Foo{
private int param1;
private float param2;
private String param3;
}
现在制作3个比较器,每个成员对应一个要排序的成员。最好使它成为同一类的静态成员。
class Foo
{
public static Comparator PARAM1_COMPARATOR = <defination>;
public static Comparator PARAM2_COMPARATOR = <defination>;
public static Comparator PARAM3_COMPARATOR = <defination>;
}
在您的活动中,请在更改排序顺序时调用此函数refreshList()
(或类似的东西)。
void refreshList()
{
List<Foo> list = //say this is your list
//Pro tip: User a switch case instead.
if(Sort_by_param1)
Collections.sort(list, Foo.PARAM1_COMPARATOR);
if(Sort_by_param2)
Collections.sort(list, Foo.PARAM2_COMPARATOR);
if(Sort_by_param3)
Collections.sort(list, Foo.PARAM3_COMPARATOR);
adapter.notifyDatasetChanged() or call setAdapter again with the new list.
}
答案 1 :(得分:1)
按照此代码对任何ArrayList
进行排序 Collections.sort(empList, new Comparator<Employee>(){
public int compare(Employee emp1, Employee emp2) {
return emp1.getFirstName().compareToIgnoreCase(emp2.getFirstName());
}
});