RecyclerView 跟随指示器滑动

效果

image.png

计算可滑动百分比

mRecyclerViewList?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
        override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
            super.onScrolled(recyclerView, dx, dy)
            val totalWidth = itemWidth * (mAdapter?.data?.size?:0)
            val canScrollWidth = totalWidth - (context.getScreenWidth())
            offsetDx += dx
            onScrollListener?.invoke(offsetDx / canScrollWidth)
        }
    })

分页

fun processKingKongData(list: List<AdvertItem>?): MutableList<ArrayList<AdvertItem>> {
    if (list.isNullOrEmpty()) return mutableListOf()
    val total = list.size
    val newList = mutableListOf<ArrayList<AdvertItem>>()
    var lastGroupIndex = 0
    var arrayList = ArrayList<AdvertItem>()
    list.forEachIndexed { index, item ->
        val groupIndex = index / 5
        if (lastGroupIndex == groupIndex) {//同一页
            genMultiTypeItem(total, item, arrayList)
        } else {//不相等 开始分页
            newList.addAll(listOf(arrayList)) // 上一页 添加
            arrayList = ArrayList()
            lastGroupIndex = groupIndex
            genMultiTypeItem(total, item, arrayList)
        }
        if (total - 1 == index) {//last
            newList.addAll(listOf(arrayList))
        }
    }
    return newList
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容