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