Есть лента которая реализована при помощи RecyclerView
, заполняю её при помощи AsyncTask
.
Сейчас у меня идет постоянная загрузка постов с сервера и динамическое заполнение ленты.
Вопрос, как мне отследить что пользователь пролистал ленту к примеру до 50-го элемента после чего выполнить подгрузку новых постов
Вам нужно добавить к RecyclerView
ScrollListener
:
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (dy > 0) {
LinearLayoutManager layoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager();
int lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition();
}
}
});
При скролле списка вызывается метод onScrolled(...)
в котором проверяется условие dy > 0
, которое означает, что список был проскроллен вниз.
Далее происходит получение номера последнего видимого элемента (на текущий момент), в зависимости от этого номера можете начинать загрузку следующих элементов.
Далее нужно проверить: если в данный момент идет загрузка, то делать ничего не нужно, если же элементы еще не загружаются, то нужно стартовать загрузку.
Тут еще есть несколько подводных камней, но общая идея такова.
И еще: с AsyncTask
следует работать очень аккуратно: если AsyncTask
– поле класса активити, то при изменении конфигурации устройства загруженные данные Вы уже не получите.
Можно, например, использовать AsyncTaskLoader
, либо AsyncTask
в retain-фрагменте (если Вы их используете), либо воспользоваться другими способами загрузки данных с сети, например, RoboSpice, либо какими-то другими.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как можно центрировать элементы списка <li> относительно границ списка <ul>?
Здравствуйте! Я не могу понять, как можно сделать плавный эффект изменения позиции фона
Нужно сверстать вот такую фигуру, но не знаю как правильно это сделатьДелал квадрат и через before добавлял обрезанный border, но на разных разрешениях...