RecyclerView監聽滑動,判斷是否完全顯示最後一個item

再使用RV的時候,加載更多是很常見的一個需求,那麼怎麼判斷RV是否已經滑動到最底部呢?

這個時候就需要LayoutManager一些現成的方法了,代碼如下:

 mRecyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
            var isToLast = false//判斷是否是垂直向下方向滑動
            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
                super.onScrolled(recyclerView, dx, dy)
                XLogUtils.i("dy-> $dy")
                isToLast = dy > 0
            }

            override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
                super.onScrollStateChanged(recyclerView, newState)
              var   manager = recyclerView.layoutManager as LinearLayoutManager
                // 當不滾動時(看需求,滾動的時候也可以加上)
                if (newState == RecyclerView.SCROLL_STATE_IDLE) {
                    //獲取最後一個完全顯示的ItemPosition
                    var lastVisibleItem = manager.findLastCompletelyVisibleItemPosition()//從0開始
                    var totalItemCount = manager.itemCount
                    // 判斷是否滾動到底部,並且是向下滾動
                    if (lastVisibleItem == (totalItemCount - 1) && isToLast ) {
                        //加載更多功能的代碼
                        XLogUtils.d("到最後一個item了")
                    }
                }
            }
        })
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章