Android如何按列对列表视图中的对象列表进行排序

时间:2011-09-20 07:26:00

标签: android sorting android-listview

我在android列表视图中使用适配器绑定类对象列表,列表视图有3个列标题(3个标题按钮),每个标题都有click事件,现在我想按列排序列表视图当我点击第一个标题列,相对于第一列排序的数据,我点击第二个标题按照第二列排序数据。我怎么能这样做。

2 个答案:

答案 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());
  }
});