ListFragment с загрузчиком и EndlessCursorAdapter - Кошмар

1

Я начну с того, что я пытаюсь выполнить.

У меня есть ListFragment, с LoaderCallbacks, связанным с извлечением данных из БД. Данные загружаются с использованием AsyncTask и вставляются в БД. Когда пользователь попадает в нижнюю часть списка, используя виджет CWAC-Endless, AsyncTask запускается и загружает больше данных.

Я столкнулся с несколькими проблемами здесь, и я попытался разобраться в этом много ночи, и я решил приехать сюда, чтобы попросить о помощи.

Первая проблема - configChanges. Когда пользователь поворачивает устройство, активность уничтожается, а затем воссоздает все фрагменты. Я знаю, что могу использовать setRetainInstance в true, но это не помогает, так как AsyncTask все еще работает, когда Activity срывается!

Вторая проблема связана с загрузчиком. Если данные загружаются, и AsyncTask завершает штраф, элементы отображаются в списке. Допустим, в БД имеется 20 элементов. Когда пользователь поворачивает устройство, а фрагмент воссоздается, загрузчик необходимо снова связать. Когда это произойдет, данные сразу не загружаются в список, и вместо этого AsyncTask для загрузки запускается, потому что адаптер CWAC-Endless считает его последним элементом в списке!

Оба эти вопроса исчерпали меня. Мне нужен свежий взгляд на это, так как им нечего делать.

Любые предложения сделают, и я могу опубликовать исходный код, если это необходимо.

РЕДАКТИРОВАТЬ

Хорошо, вот несколько подробностей, чтобы помочь с некоторыми предложениями.

Я загружаю данные из Интернета, которые будут возвращать только определенное количество элементов одновременно. Затем я должен запросить больше данных, когда захочу (разбиение на страницы).

Я решил использовать базу данных, так как новая функциональность Loader позволяет сделать так, чтобы данные загружались эффективно и последовательно, без каких-либо проблем с потоками. Если было бы целесообразно отказаться от подхода Loader и использовать стандартный адаптер для визуализации данных, я более чем рад отказаться от этого подхода и использовать его. Я просто хотел посмотреть, сможет ли кто-нибудь понять, почему это решение так сложно.

Благодаря,

Адам

Теги:
android-fragments
android-asynctask
commonsware-cwac

1 ответ

1
Лучший ответ

Когда пользователь попадает в нижнюю часть списка, используя виджет CWAC-Endless, AsyncTask запускается и загружает больше данных.

FWIW, я не пробовал EndlessAdapter с такой комбинацией вещей (курсоры, загрузчики и AsyncTask). В частности, цитирование документов:

Обратите внимание, что это было протестировано с помощью ArrayAdapter широко, но может не работать с другими типами адаптеров

Я даже не совсем EndlessAdapter какой EndlessAdapter использования EndlessAdapter применим к локальной базе данных. Если у вас сумасшедший длинный список (например, тысячи строк), ответ не "загружает его постепенно", а "предоставляет другой UX, чтобы избежать длинного списка". Для более коротких списков просто загрузите все это и сделайте это. EndlessAdapter предназначен для случаев, когда загрузка является дорогостоящей (например, доступ в Интернет).

При этом я добавлю "играть с EndlessAdapter и Loader " в список дел.

Я знаю, что могу использовать setRetainInstance в true, но это не помогает, так как AsyncTask все еще работает, когда Activity срывается!

Так? onPostExecute() не будет вызываться до тех пор, пока новая активность не onCreate() через onCreate(). Кроме того, в модели на основе фрагментов ваша задача должна быть setRetainInstance(true) с фрагментом, и если этот фрагмент сохраняется через setRetainInstance(true), он является тем же фрагментом как в старом, так и в новом действии.

Когда это произойдет, данные сразу не загружаются в список

Он должен быть загружен довольно быстро, хотя и асинхронно. Более того, я не понимаю, почему это ничем не отличается от того, когда деятельность создается в первую очередь.

и вместо этого AsyncTask для загрузки стартует, потому что адаптер CWAC-Endless считает его последним пунктом в списке

Вы не должны создавать EndlessAdapter до EndlessAdapter пор, пока не получите данные.

  • 0
    У меня есть еще пара комментариев, но мне интересно, есть ли где-нибудь еще, мы можем обсудить это, так как я чувствую, что это довольно долго
  • 0
    У меня есть какие-либо обновления на EndlessAdapter с загрузчиками и курсорами. Я тоже застрял здесь.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню