Android как отсортировать список объектов в виде списка по столбцу - PullRequest
2 голосов
/ 20 сентября 2011

Я связываю список объектов класса с помощью адаптеров в представлении списка Android, представление списка имеет 3 заголовка столбца (3 кнопки заголовка), каждый заголовок имеет событие щелчка, теперь я хочу отсортировать представление списка по столбцу, когда я нажимаю на него.Первый заголовок столбца, данные отсортированы по первому столбцу, я нажимаю второй заголовок, отсортировал данные по второму столбцу. Как я могу это сделать.

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

Впереди куча псевдокода, вас предупредили.

Скажем, у вас есть класс 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 голос
/ 11 декабря 2012

Используйте этот код для сортировки любого ArrayList

  Collections.sort(empList, new Comparator<Employee>(){
  public int compare(Employee emp1, Employee emp2) {
    return emp1.getFirstName().compareToIgnoreCase(emp2.getFirstName());
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...