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