无尽的RecyclerView数据加载逻辑在所有设备上都不一致

我从RecyclerView中加载SQLite数据库的数据,每个加载周期有25条记录。 我找出每一件事情,但在RecyclerView滚动侦听器调用数据加载方法的逻辑有问题。
问题是列表正在加载在recyclerView在模拟器的滚动很好,但是当我在物理设备上测试,在联想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。

你也可以通过设置enabled来设置visibleThreshold和启用/禁用页面加载。

我用来滚动更多的是:

  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 } } }); 

希望这可以帮助。