无尽的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() } } } }
- 如何保存从RadioButton中选择的颜色,并使用android应用于ListView
- Firebase-Firestore不能同时加载2个文档的信息
- 为什么Kotlin插件为Android项目添加了kotlin-stdlib-jre7(不是kotlin-stdlib)参考
- Android如何在Kotlin中以编程方式设置多个重力值?
- Kotlin Android基地方法不能调用
我有同样的问题。 尝试这个
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 } } });
希望这可以帮助。
- 如何在Android中添加对普通Java Lib的Kotlin支持?
- 构造函数在kotlin派生类中的可分构造器
- 如何在Kotlin中使用Dagger的2 @Named限定符
- Android数据绑定与Kotlin,BaseObservable和一个自定义委托
- 警告:警告:注释处理器“android.arch.lifecycle.LifecycleProcessor”支持的源版本“RELEASE_7”小于“源”1.8
- 与Fragment和Anko吐司的“接收器类型不匹配”
- 与房间的多对多关系导致错误:实体和Pojos必须有一个可用的公共构造函数
- 如何在Kotlin Android中为数据类创建空构造函数
- Firebase Perf不会运行测试应用程序:transformClassesWithFirebasePerformancePluginForDebugAndroidTest