本来先看了 paging 的相关资料,发现顺序有点不太对,应该先处理 RecyclerView 下滑时 UI 的细节,後续才可以去呼叫 API。
最直觉的处理方式就是在 RecyclerView 在下滑时去计算是不是需要读更多的资料,不过在实做上的时候觉得一直滑动就在计算的频率太高,所以先依 scrollview 是静止的时候再去检查。
recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
shouldLoadMore()
}
}
})
private fun shouldLoadMore() {
layoutManager?.let {
if (it.findFirstCompletelyVisibleItemPosition() == RecyclerView.NO_POSITION) {
return
}
val lastPosition = it.findLastCompletelyVisibleItemPosition()
// 检查目前显示的笔数跟总个数的差异
val result = abs(it.itemCount - lastPosition)
// 检查是不是最後一笔了
isLastPage = (it.itemCount - 1) == lastPosition
if (!isLastPage && abs(result) <= 8) {
Log.i(MainActivity.TAG, "loadmore")
}
}
}
<<: Day28 - GitLab CI 如何让工作流程流水线跑快一点?之二 逐一调整
>>: Day 28 Explore monitoring and reporting
虽然之前有看过 slice / array 比较的文章, 但在写 leetcode 时还是碰到点小麻...
K-means的中文有人称作集群分析,但是主要都还是讲英文,比较容易懂。 这分析方法跟KNN...
今天大概会聊到的范围 State Gesture Modifier 在之前,都只是在介绍比较静态的...
试想当你有了一个绝佳的 idea,如何验证这个概念可不可行、够不够好呢?设计师常用的方法,是制做一个...
来到阵列系列的最後一天,今天要一次认识会改变原本阵列的Array Method,再往下看之前,先来个...