Я пытаюсь разработать обзор переработчика, который должен загружать новые элементы, когда пользователь прокручивает страницу вниз (переработчик для подачи новостей). Проблема заключается в том, что при любом способе, который я пробую, мой адаптер видит, что видимые элементы из утилизатора совпадают с getItemCount. Один из способов, который я попробовал, был переопределить следующий класс в адаптере:
@Override
public void onViewAttachedToWindow(@NonNull ViewHolder holder) {
super.onViewAttachedToWindow(holder);
if((getItemCount() -1) == holder.getAdapterPosition()){
Log.e("TAGNews", "List Done!");
}
}
или другой метод, реализованный в моем фрагменте:
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int visibleItemCount = manager.getChildCount();
int totalItemCount = manager.getItemCount();
int firstVisibleItem = manager.findFirstVisibleItemPosition();
if (loading) {
if (totalItemCount > previousTotal) {
loading = false;
previousTotal = totalItemCount;
}
}
if (!loading && (totalItemCount - visibleItemCount)
<= (firstVisibleItem + visibleThreshold)) {
// End has been reached
Log.e("News!", "end called");
loadMoreNews();
loading = true;
}
}
});
Но всегда, мои сообщения для отладки, которые должны вызываться конец рециркулятора, запускаются при открытии рециркулятора. Вот как выглядит мой переработчик в первый раз, когда он открывается, без прокрутки
Я загружаю от 3 до 10 элементов из моего бэкэнда, и новости имеют одинаковую высоту.
Спасибо в совет!