Есть лента которая реализована при помощи 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, либо какими-то другими.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Как можно центрировать элементы списка <li> относительно границ списка <ul>?
Здравствуйте! Я не могу понять, как можно сделать плавный эффект изменения позиции фона
Нужно сверстать вот такую фигуру, но не знаю как правильно это сделатьДелал квадрат и через before добавлял обрезанный border, но на разных разрешениях...