2

Дано: есть новостное приложение, парсер сайта. Работа с обновлениями списка реализована с помощью библиотеки PullToRefresh.

Надо: хочу сделать, как в приложениях ВКонтакте, G+ etc. Т.е. загружать новые статьи, потянув вниз и увидев анимацию в ActionBare; загружать предыдущие автоматически, как только юзер дойдёт до конца списка. Ну и чтоб при поступлении новых данных из сервиса выкидывалась сверху кнопка "открыть 7 новых".

Вопрос: надо свой велосипед писать или есть готовые решения? Если есть, то есть ли официальные гугловые, типа как с Navigation Drawer-ом? И есть ли по всему этому какие-либо руководства\ примеры?

Спрашиваю тут, т.к. в своё время кучу времени потратил на гугленье того же Navigation Drawer-а, гугл мне вовсю выдавал устаревшие статьи по неофиц. библиотекам. Хотя бы направление, в котором копать, хотелось бы) Заранее всем спасибо!

2 ответа 2

4
  1. Для свайпа вниз и с анимацией в ActionBar есть уже стандартный андроидовский SwipeRefreshLayout.
  2. Подгрузка старых - GitHub - InfiniteListView, How to Implement an Infinitely Scrolling List in Android.
  3. Как и написал @Deadkenny сделать самому плашку, либо приспособить, к примеру, SuperToasts.
1
  • Спасибо, похоже, это как раз то, что я и хотел узнать! =)
    – ЮрийСПб
    15 сен 2014 в 17:53
3

Библиотек нет, все вручную.

  • Подгрузка новостей при скроле. Нужно следить за положением скрола ListView, когда подходишь к концу списка - запускаешь подгрузку. Для примера можно посмотреть исходники google ioshed.
  • Подгрузка новостей с плашкой "открыть 7-мь новых"(кстати не пишут 7-мь, т.к. получается слово семьмь) - время от времени посылать запрос к API и если будут новые новости, то показывать плашку. Google+ API.

Для всего этого дела гугл использует свои Loaders. Достаточно удобно, хотя немного запутана логика, на мой взгляд. Для старых версий есть совместимость в Support library v7.

2
  • Спасибо за наводку на Loader. Почитал доки. Правильно ли я понял, что основные отличия Loader (AsyncTaskLoader) от AsyncTask, коий я сейчас пользую, в том, что обновить адаптер списка (например) можно из активити прямо (в onLoadFinished()), а не из onPostExecute(), как в AsyncTask? И что задача в бэкграунде не зависима от измений конфигурации (типа поворота экрана) и приостанавливается автоматически в onPause()? И таки да - с "7-мь" очепятался. УжО поправил) Извиняю себя тем, что уважаемый модератор @Виталина ♦ тоже пропустил(а(?)) этот момент, правя мой вопрос на предмет пропущенных запятых
    – ЮрийСПб
    15 сен 2014 в 18:06
  • 1
    @ЮрийСПб, да, основное достоинство - неизменность во время изменения конфигурации. Просто инициализируется Loader и кэшированные данные приходят в onLoadFinished(). Также можно иметь несколько загрузчиков в одном фрагменте.
    – Deadkenny
    15 сен 2014 в 18:18

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.