iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

0
自我挑戰組

30 天開發 Android App 的流水帳系列 第 31

Day 31:RecyclerView Loads More

本來先看了 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")
        }
    }
}

上一篇
Day 30:持續學習之流水帳未來方向
下一篇
Day 32:來呼叫星戰 Profile List 下一頁吧(1/2)
系列文
30 天開發 Android App 的流水帳32

尚未有邦友留言

立即登入留言