Как организовать подгрузку элементов?

700
17 января 2017, 23:12

Есть лента которая реализована при помощи RecyclerView, заполняю её при помощи AsyncTask.

Сейчас у меня идет постоянная загрузка постов с сервера и динамическое заполнение ленты.

Вопрос, как мне отследить что пользователь пролистал ленту к примеру до 50-го элемента после чего выполнить подгрузку новых постов

Answer 1

Вам нужно добавить к 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, либо какими-то другими.

READ ALSO
Как получить value option у select

Как получить value option у select

Как передать id option а не имя? Например:

428
Как центрировать <li> относительно границ <ul>?

Как центрировать <li> относительно границ <ul>?

Как можно центрировать элементы списка <li> относительно границ списка <ul>?

355
Плавное изменение позиции фона

Плавное изменение позиции фона

Здравствуйте! Я не могу понять, как можно сделать плавный эффект изменения позиции фона

473
Как в CSS сверстать неровную фигуру?

Как в CSS сверстать неровную фигуру?

Нужно сверстать вот такую фигуру, но не знаю как правильно это сделатьДелал квадрат и через before добавлял обрезанный border, но на разных разрешениях...

375