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

Android 无尽的RecyclerView数据加载逻辑在所有设备上都不一致,android,kotlin,Android,Kotlin,我在RecyclerView中从SQLite数据库加载数据,每个加载周期有25条记录。我明白了所有的事情,但在RecyclerView scroll listener中调用数据加载方法的逻辑有问题。 问题是,在emulator中,列表很好地加载到了recyclerView的卷轴上,但当我在物理设备上测试时,在Lenovo Phab 2上,它工作得很好,但在Mi note 3中,列表在到达卷轴底部时并没有一致地加载(有时加载,有时不加载)更多记录 下面是我在RecyclerView scrolle

我在RecyclerView中从SQLite数据库加载数据,每个加载周期有25条记录。我明白了所有的事情,但在RecyclerView scroll listener中调用数据加载方法的逻辑有问题。
问题是,在emulator中,列表很好地加载到了recyclerView的卷轴上,但当我在物理设备上测试时,在Lenovo Phab 2上,它工作得很好,但在Mi note 3中,列表在到达卷轴底部时并没有一致地加载(有时加载,有时不加载)更多记录

下面是我在RecyclerView scrolle listener中使用的代码

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()
                }
            }
        }
}
private val RecyclerView\u ScrollListener=object:RecyclerView.OnScrollListener(){
覆盖已克隆的乐趣(RecyclerViewW1:RecyclerView?,dx:Int,dy:Int){
super.onScrolled(回收服务W1、dx、dy)
如果(dy>0){
if(限制=totalItemCount){
上限+=25
加载_数据()
}
}
}
}
我编写了一个适用于所有类型布局管理器的应用程序。它在模拟器和真实设备上进行了测试

它具有阻止下一页重复加载的阻止程序。当
Listener.onListEndReached()
返回true时,将不会再次调用它,直到
RecycleServiceOnScrollUpdater。加载将设置为false


您还可以通过设置
已启用

来设置
可视阈值
和启用/禁用页面加载。我用来滚动更多内容的是:

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

希望这有帮助。

我也有同样的问题。试试这个

if (limit < returnedRowCount_fromDatabase) {
    if((dy > 0) && (linearLayoutManager.findLastCompletelyVisibleItemPosition() == rowList.size() - 1)){
        limit += 25;
        load_Data();
      }
}
if(限制0)&&(linearLayoutManager.findLastCompletelyVisibleItemPosition()==rowList.size()-1)){
限值+=25;
加载_数据();
}
}