Использование курсоров и адаптеров по большей части не работает хорошо. Наш опыт привел к другой технике.
Лучше всего «накачать» курсоры в AsyncTask
в ArrayList<data-holding object>
, затем вы можете выполнить обработку и затем отсортировать этот список по мере необходимости с помощью Collections.sort()
и Comparator
вашей собственной конструкции, и затем используйте ArrayAdapter
для представления результирующего списка. Это освобождает курсоры как можно скорее и не затрагивает поток пользовательского интерфейса, и вы можете сортировать их по своему усмотрению.
Помните, всегда обрабатывайте в фоновом режиме и избегайте ANR!
Мы используем это во всех наших приложениях (14 на Маркете), и оно работает как Butter.