美文网首页
2022-06-30

2022-06-30

作者: 就爱烫卷发 | 来源:发表于2022-06-30 14:46 被阅读0次

recycleView滑动监听加载更多

package com.pateo.online_video.app.follow.view
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.StaggeredGridLayoutManager
import timber.log.Timber

/**
 *Author:GianWang
 *CreateTime:2022/6/28 下午3:59
 *Description:滑动到最后的监听
 */
abstract class MyRecyclerOnScrollListener : RecyclerView.OnScrollListener() {
    //加载更多
    abstract fun onLoadMore()
    var lastVisibleItemPosition = 0
    override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
        super.onScrollStateChanged(recyclerView, newState)
        var layoutManager =  recyclerView.layoutManager
        val visibleItemCount: Int = layoutManager!!.childCount
        val totalItemCount: Int = layoutManager!!.itemCount
        Timber.d("onScrollStateChanged $totalItemCount --- $visibleItemCount --- $lastVisibleItemPosition ")
        if ((visibleItemCount > 0 && newState == RecyclerView.SCROLL_STATE_IDLE && (lastVisibleItemPosition) >= totalItemCount - 1)) {
            Timber.d("onScrollStateChanged loading more ")
            onLoadMore();//请求更多数据
        }
    }

    override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
        super.onScrolled(recyclerView, dx, dy)
        var layoutManager = recyclerView.layoutManager
        when (layoutManager) {
            is LinearLayoutManager -> {
                lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition()
            }
            is GridLayoutManager -> {
                lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition()
            }
            is StaggeredGridLayoutManager -> {
                var ints = IntArray(layoutManager.spanCount)
                ints =  layoutManager.findLastCompletelyVisibleItemPositions(ints)
                lastVisibleItemPosition = findMax(ints)
            }
            else -> {
                throw RuntimeException(
                    "Unsupported LayoutManager used. Valid ones are LinearLayoutManager, GridLayoutManager and StaggeredGridLayoutManager"
                )
            }
        }
    }
    //取出数组中最大
    private fun findMax(intArray: IntArray): Int {
        var max = intArray[0]
        for (value in intArray) {
            if (value > max) {
                max = value
            }
        }
        return max
    }
}

相关文章

  • Say Hello Again对话

    杨素芳 中原焦点团队 坚持分享1616天 2022-06-30 叙事的Say hello again对话,汉译...

  • Say Hello Again对话

    杨素芳 中原焦点团队 坚持分享1616天 2022-06-30 叙事的Say hello again对话,汉译...

  • 2022-06-30

    Nature Comp Sci | AI辅助寡核苷酸靶点发现 原创图灵基因图灵基因2022-06-30 14:11...

  • 体测

    2022-06-30 晴热 周四 宝贝的运气很好,被抽中体测。 “我的‘运气’真是爆棚了!学校说...

  • 0241复盘|六月的最后一天

    2022-06-30 北京 晴转雨灯塔读书会|持续行动1000天·运动·冥想·读书·写作 今日奇遇: 早上再次读了...

  • 6月复盘

    2022-06-30 周四 天气晴 热 【6月复盘】 6月我的收益12669.23。收益走势:本月跑输沪深300 ...

  • 琐事两则

    2022-06-30 01 昨日我们迷失于南岳街头。 事情是这样的: 本来按照往常习俗,我们进香时间一般是选择每年...

  • 戒定慧·《感恩日志》重启第48天

    2022-06-30(周四)六月初三 戒定慧·《感恩日志》重启第48天 【21:30】 我是多么的幸福和感恩: 0...

  • 6月,上半年再见了。

    2022-06-30 好好生活,好好享受当下。 2022-06-29 好好说话是需要经历过人和事后才明白的。 20...

  • 给予来访者控制权

    中原焦点团队 坚持分享1445天 2022-06-30 焦点解决有个重要理念:来访者是自身问题的专家。也就是说...

网友评论

      本文标题:2022-06-30

      本文链接:https://www.haomeiwen.com/subject/ffbfbrtx.html