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.AlarmManagementActivity
import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
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() {
        rightOptionView.setOnClickListener {
            requireContext().navigatePageTo<AlarmManagementActivity>()
        }
    }

    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) {
                            requireContext().navigatePageTo<DeviceDetailActivity>(dataBeans[position].devcode)
                        }

                        override fun onHistoryClicked(position: Int) {
                            requireContext().navigatePageTo<HistoryDataActivity>(dataBeans[position].devcode)
                        }

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