Страницы

Поиск по вопросам

четверг, 1 ноября 2018 г.

Подгрузка данных в RecyclerView

Реализовал приложение которое грузит статьи с сайта. Статей 400+ через JSON гружу последние 10. Остальные планирую грузить другим отдельным таском по запросу пользователя. Вопрос: Как прикрутить кнопку в низу RecyclerView, что бы можно было при желании подгрузить следующие 10 статей. Или может что то другое посоветуете?


Ответ

Для автоматической подгрузки, если пользователь прокрутил список до конца, вам нужно использовать кастомный OnScrollListener
RecyclerView.OnScrollListener scrollListener = new OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int visibleItemCount = layoutManager.getChildCount();//смотрим сколько элементов на экране int totalItemCount = layoutManager.getItemCount();//сколько всего элементов int firstVisibleItems = layoutManager.findFirstVisibleItemPosition();//какая позиция первого элемента
if (!isLoading) {//проверяем, грузим мы что-то или нет, эта переменная должна быть вне класса OnScrollListener if ( (visibleItemCount+firstVisibleItems) >= totalItemCount) { isLoading = true;//ставим флаг что мы попросили еще элемены if(loadingListener != null){ loadingListener.loadMoreItems(totalItemCount);//тут я использовал калбэк который просто говорит наружу что нужно еще элементов и с какой позиции начинать загрузку } } } } };
Не забываем назначить его _recyclerView.setOnScrollListener(scrollListener);
Есть небольшая особенность, этот код не будет работать с StaggeredGridLayoutManager
Грузите следующую партию статей и добавляете в адаптер, после добавления вызываете у адаптера notifyDataSetChanged() и ставите флаг isLoading = false
В адаптере вам нужно сделать что бы его размер был (реальный размер + 1) и отображать последний элемент как индикатор загрузки.

Комментариев нет:

Отправить комментарий