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 } }