美文网首页
Kotlin 刷新加载更多

Kotlin 刷新加载更多

作者: 小赵不在 | 来源:发表于2020-12-21 13:34 被阅读0次

布局要用SmartRefreshLayout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@mipmap/bg_main"
    tools:context=".ui.activity.MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rv_grade_list"
        android:layout_width="match_parent"
        android:layout_height="@dimen/dimens_80dp"
        android:background="#6A2F80"
        android:paddingLeft="@dimen/dimens_30dp"/>

    <com.scwang.smartrefresh.layout.SmartRefreshLayout
        android:id="@+id/refresh_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ImageView
                android:id="@+id/iv_no_data"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:gravity="center_horizontal"
                android:src="@mipmap/icon_nothing"
                android:visibility="gone" />

            <include
                android:id="@+id/status_view"
                layout="@layout/status_view_white"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                />

            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/rv_list"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_centerInParent="true"/>
        </RelativeLayout>
    </com.scwang.smartrefresh.layout.SmartRefreshLayout>
</LinearLayout>

刷新加载方法

private fun initRefreshLayout(){
        //设置刷新样式
        refresh_layout.setRefreshHeader(ClassicsHeader(this))
        refresh_layout.setRefreshFooter(ClassicsFooter(this))
        //刷新
        refresh_layout.setOnRefreshListener {
            viewModel.pageIndex = 1
            viewModel.GetMicroLesBooks(viewModel.selectGrade)
        }
        //加载更多
        refresh_layout.setOnLoadMoreListener {
            viewModel.pageIndex++
            viewModel.GetMicroLesBooks(viewModel.selectGrade)
        }
        refresh_layout.setEnableLoadMore(false)
        //刷新状态改变
        viewModel.refreshStat.observe(this, Observer {
            when (it) {
                1 -> {//刷新完成
                    refresh_layout.finishRefresh()
                }
                2 -> {//加载完成
                    refresh_layout.finishLoadMore()
                }
                3 -> {//没有更多了
                    ToastUtils.showShort("没有更多了!")
                    refresh_layout.finishLoadMore()
                }
                4 -> {//获取数据失败
                    refresh_layout.finishRefresh()
                    refresh_layout.finishLoadMore()
                    if (tempData.size == 0) {
                        status_view?.visibility = View.VISIBLE
                        data_available_view.visibility = View.VISIBLE
                    } else {
                        status_view?.visibility = View.GONE
                        data_available_view.visibility = View.GONE
                    }
                }
            }
        })
    }

ViewModel中的操作

var pageIndex = 1
    var pageSize = 10000
    var selectGrade = "1"
    /**
     * 刷新状态
     * 1 刷新完毕  2 加载完毕 3 没有更多数据了 4 加载出错了
     */
    var refreshStat = MutableLiveData<Int>()
    var netAvailableLiveData = MutableLiveData<Boolean>()
 /**
     * 根据年级获取栏目列表和栏目下的教材列表
     */
    fun GetMicroLesBooks(gradeId: String) {
        if (!NetworkUtils.isConnected()) {
            ToastUtils.showShort("请检查您的网络!")
            netAvailableLiveData.value = false
            return
        }
        netAvailableLiveData.value = true
        var paramsMap = mutableMapOf<String, String>()
        paramsMap["gradeId"] = gradeId//默认0,表示所有年级
        paramsMap["subjectId"] = "0"//默认0,表示所有科目
        paramsMap["pageIndex"] = pageIndex.toString()
        paramsMap["pageSize"] = pageSize.toString()
        paramsMap["isFilterMicroVideo"] = 1.toString()

//        /*  isFilterMicroVideo 是否过滤微课栏目下视频:0否,1是(只显示19专题课,1022同步微课栏目下视频),默认是0*/
//        if (BuildConfig.APPLICATION_ID === "com.djt.module_lesson_video.xxj") {
//
//        } else {
//            paramsMap["isFilterMicroVideo"] = 0.toString()
//        }


        var disposable: Disposable? = null
        disposable = LessonVideoApplication.dataManager.GetMicroLesBooks(paramsMap)
                .subscribeOn(Schedulers.io()).map {
                    it.Data?.PageData?.sortBy { it.Sort }
                    it.Data?.PageData?.forEach {
                        it.BookList = it.BookList.sortedBy { it.BookSort }
                    }
                    it
                }
                .observeOn(AndroidSchedulers.mainThread()).subscribe({
                    if (it.Code == AppConstants.Server.SUCCESS_CODE) {
                        bookList.value = it.Data?.PageData as MutableList<MicroLesBooks>
                        if (pageIndex == 1) {
                            refreshStat.value = 1
                        } else {
                            if (it.Data!!.TotalPage >= it.Data!!.CurPage) {
                                refreshStat.value = 2
                            } else {
                                refreshStat.value = 3
                            }
                        }
                    } else {
                        refreshStat.value = 4
                        ToastUtils.showShort("获取数据失败!")
                    }
                    disposable?.dispose()
                }, {
                    disposable?.dispose()
                    it.printStackTrace()
                })
    }

相关文章

网友评论

      本文标题:Kotlin 刷新加载更多

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