Newer
Older
CasicSmartTube / app / src / main / java / com / casic / smarttube / fragment / OverviewFragment.kt
package com.casic.smarttube.fragment

import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_overview.*
import kotlinx.android.synthetic.main.include_empty_view.*

class OverviewFragment : KotlinBaseFragment() {

    private lateinit var weakReferenceHandler: WeakReferenceHandler
    private lateinit var deviceViewModel: DeviceViewModel
    private lateinit var deviceAdapter: DeviceListAdapter
    private var dataBeans: MutableList<DeviceListModel.DataBean.RowsBean> = ArrayList()
    private var pageIndex = 1
    private var isRefresh = false
    private var isLoadMore = false

    override fun initLayoutView(): Int = R.layout.fragment_overview

    override fun setupTopBarLayout() {

    }

    override fun initData() {
        weakReferenceHandler = WeakReferenceHandler(callback)
        deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
    }

    override fun onResume() {
        //默认加载第一页
        obtainDeviceList()
        super.onResume()
    }

    override fun initEvent() {
        overviewLayout.setOnRefreshListener {
            isRefresh = true
            //刷新之后页码重置
            pageIndex = 1
            obtainDeviceList()
        }
        overviewLayout.setOnLoadMoreListener {
            isLoadMore = true
            pageIndex++
            obtainDeviceList()
        }

        deviceViewModel.deviceListModel.observe(this, {
            if (it.code == 200) {
                val dataRows = it.data?.rows
                when {
                    isRefresh -> {
                        dataBeans.clear()
                        dataBeans = dataRows!!
                        overviewLayout.finishRefresh()
                        isRefresh = false
                    }
                    isLoadMore -> {
                        if (dataRows?.size == 0) {
                            "到底了,别拉了".show(requireContext())
                        }
                        dataBeans.addAll(dataRows!!)
                        overviewLayout.finishLoadMore()
                        isLoadMore = false
                    }
                    else -> {
                        dataBeans = dataRows!!
                    }
                }
                weakReferenceHandler.sendEmptyMessage(2022062401)
            }
        })
    }

    private fun obtainDeviceList() {
        deviceViewModel.obtainDeviceListByType("", "", "", pageIndex)
    }

    private val callback = Handler.Callback {
        if (it.what == 2022062401) {
            if (isRefresh || isLoadMore) {
                deviceAdapter.notifyDataSetChanged()
            } else {
                if (dataBeans.size == 0) {
                    emptyView!!.showEmptyPage("这里什么都没有") {
                        pageIndex = 1
                        obtainDeviceList()
                    }
                } else {
                    emptyView!!.hide()
                    deviceAdapter = DeviceListAdapter(requireContext(), dataBeans)
                    recyclerView!!.layoutManager = LinearLayoutManager(requireContext())
                    recyclerView!!.adapter = deviceAdapter
                    deviceAdapter.setOnItemClickListener(object :
                        DeviceListAdapter.OnItemClickListener {
                        override fun onClicked(position: Int) {
//                            val jobId = dataBeans[position].jobId.toString()
//                            if (jobId.isBlank()) {
//                                "设备编号异常,无法查看详情".show(requireContext())
//                                return
//                            }
//                            requireContext().navigatePageTo<DeviceDetailActivity>(jobId)
                        }

                        override fun onHistoryClicked(position: Int) {

                        }

                        override fun onEditClicked(position: Int) {

                        }

                        override fun onWellDetailClicked(position: Int) {
                            requireContext().navigatePageTo<WellDetailActivity>(dataBeans[position].wellId)
                        }
                    })
                }
            }
        }
        true
    }
}