Kotlin 实现内存分页完整源代码

时间:2022-06-24
本文章向大家介绍Kotlin 实现内存分页完整源代码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
class PageHelper {

    /**
     * 对一个列表进行分页
     * @param list 列表
     * @param currentPage 当前页,从1开始
     * @param pageSize 每页数量
     */
    fun <T> page(list: MutableList<T>, currentPage: Int, pageSize: Int): Page<T> {
        val page = Page<T>()
        var data: MutableList<T> = mutableListOf()

        // 手动分页
        val totalCount = list.size

        val totalPage = if ((totalCount % pageSize) > 0) {
            (totalCount / pageSize + 1)
        } else {
            (totalCount / pageSize)
        }


        // 返回当前页数据封装
        if (totalCount > pageSize) {
            // 多页
            var i = (currentPage - 1) * pageSize

            while (true) {
                if (currentPage * pageSize > i) {
                    if (i < totalCount) {
                        data.add(list[i])
                        i++
                    } else {
                        break
                    }
                } else {
                    break
                }
            }

        } else {
            data = list
        }

        // 每页大小
        page.pageSize = pageSize
        // 总页数
        page.totalPage = totalPage
        // 总数
        page.totalCount = totalCount
        // 当前页
        page.currentPage = currentPage
        // 当前页的数据
        page.data = data

        return page
    }

}

class Page<T> {
    var currentPage: Int = 1
    var pageSize: Int = 10
    var totalPage: Int = 10
    var totalCount: Int = 10
    var data: MutableList<T> = mutableListOf()
}