Логика загрузки Endless RecyclerView несовместима на всех устройствах

Я загружаю данные из базы данных SQLite в RecyclerView в пакете из 25 записей на каждый цикл нагрузки. Я выясняю все, но имею проблему с логикой вызова метода загрузки данных в RecyclerView scroll listener.
Проблема заключается в том, что список загружается красиво на прокрутке recyclerView в эмуляторе, но когда я тестировал на физическом устройстве, на Lenovo Phab 2 он работал нормально, но в примечании 3 к Ми, список не загружается последовательно (когда-то он загружается, когда-то нет) больше записей на достигая нижней части прокрутки.

Ниже приведен код, который я использую в прослушивателе прокрутки RecyclerView

private val RecyclerView_ScrollListener = object : RecyclerView.OnScrollListener(){ override fun onScrolled(recyclerView1: RecyclerView?, dx: Int, dy: Int) { super.onScrolled(recyclerView1, dx, dy) if (dy > 0) { if (limit < rowCount_fromDatabase) { visibleItemCount = layoutManager_MemberList.childCount totalItemCount = layoutManager_MemberList.itemCount firstVisibleItemPosition = layoutManager_MemberList.findFirstVisibleItemPosition() if (visibleItemCount + firstVisibleItemPosition >= totalItemCount) { limit += 25 load_Data() } } } } 

У меня такая же проблема. Попробуй это

 if (limit < returnedRowCount_fromDatabase) { if((dy > 0) && (linearLayoutManager.findLastCompletelyVisibleItemPosition() == rowList.size() - 1)){ limit += 25; load_Data(); } } 

Я написал класс , который работает со всеми типами LayoutManagers. Он был протестирован на эмуляторах и реальных устройствах.

Он имеет блокировщики для предотвращения двойной загрузки следующей страницы. Когда Listener.onListEndReached() возвращает true, он не будет вызываться снова, пока RecyclerViewOnScrollUpdater.loading не будет установлен в false.

Также вы можете установить visibleThreshold и включить / отключить загрузку страницы с enabled настройкой.

Что я использую для прокрутки больше:

  mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); if (!recyclerView.canScrollVertically(1)){ //Load more data here. It will only trigger when you reach the end of your list and cannot scroll further } } }); 

Надеюсь это поможет.

Intereting Posts
Формат Строка Котлина с несколькими вхождениями Возвращаемое значение для переменной, которая, по-видимому, может быть нулевой, но на самом деле не может DataBinding не может использоваться в BaseActivity, где я код в Kotlin Синтаксис функции Kotlin Как создать экземпляр объекта с использованием значений параметров конструктора по умолчанию в Kotlin? Kotlin: Intrinsics.areEqual бесконечный цикл (переполнение стека) RxJava не может быть завершен, как избежать toBlocking () Котлин разметит шестнадцатеричную строку длинной Как динамически масштабировать отскок потока эмиссионных выбросов? В чем разница между оператором «как» и «есть» в Котлине? Способы жизненного цикла в статически типизированных языках Как использовать Spring Data JPA методы, возвращающие поток в блок try-with-resources в Котлине? NullPointerException в Android Studio 3 Beta 1 Ошибка сообщения IntelliJ об ошибке для файла, не найденного в модуле, который я создал ClassNotFoundException с ароматами продукта и Kotlin