Проблема дизайна листинга Android с курсорами - PullRequest
3 голосов
/ 26 апреля 2010

В моем приложении для Android есть следующая ситуация.

  1. У меня есть приложение, которое выбирает сообщения из папки «Входящие», отправляет элементы и черновики на основе ключевых слов поиска. Я использую для этого, выбирая курсоры для каждого вручную на основе выбора пользователем, а затем заполняя их в пользовательском объекте-держателе данных. Отфильтруйте эти результаты по заданным ключевым словам, а затем вручную просмотрите представление с соответствующими данными.

Кто-то предложил мне использовать специальный адаптер Cursor для привязки вида и данных моего курсора. Поэтому я попытался сделать это. Теперь то, что я делаю, это:

  1. Выбор отдельных курсоров для входящих сообщений, отправленных элементов и черновиков. Объедините их в один, используя курсор слияния, а затем передайте его обратно в мою реализацию CursorAdapter.
  2. Теперь, где или как мне отфильтровать данные моего курсора по ключевым словам; потому что теперь привязка будет гарантировать, что они напрямую отображаются для просмотра в списке. Кроме того, некоторые операции после извлечения, такие как получение изображения контакта отправителя, и все это будет то, что я не хочу переходить на адаптер. Если я делаю всю эту обработку в адаптере; это будет тяжело и безобразно.

Как я мог спроектировать его лучше, чтобы он выполнял свои обязанности и распределял обязанности между ними

Любые идеи будут полезны.

1 Ответ

1 голос
/ 20 декабря 2011

Использование курсоров и адаптеров по большей части не работает хорошо. Наш опыт привел к другой технике.

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

Помните, всегда обрабатывайте в фоновом режиме и избегайте ANR!

Мы используем это во всех наших приложениях (14 на Маркете), и оно работает как Butter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...