package com.casic.smarttube.view 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.utils.DialogHelper import com.casic.smarttube.vm.ProjectGroupViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView import kotlinx.android.synthetic.main.activity_alarm_management.titleView import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.include_empty_view.* class GroupDeviceActivity : KotlinBaseActivity() { private lateinit var groupId: String private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var groupViewModel: ProjectGroupViewModel private lateinit var deviceAdapter: DeviceListAdapter private var dataBeans: MutableList<DeviceListModel.DataBean> = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false private var order = 0 override fun initLayoutView(): Int = R.layout.activity_group_device override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } titleView.text = "设备列表" rightOptionView.setOnClickListener { order = if (order == 0) { 1 } else { 0 } pageIndex = 1 obtainDeviceListByPage() } } override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) obtainDeviceListByPage() } override fun initEvent() { groupDeviceLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainDeviceListByPage() } groupDeviceLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainDeviceListByPage() } groupViewModel.deviceListModel.observe(this, { if (it.code == 200) { val dataRows = it.data when { isRefresh -> { dataBeans.clear() dataBeans = dataRows!! groupDeviceLayout.finishRefresh() isRefresh = false } isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(this) } dataBeans.addAll(dataRows!!) groupDeviceLayout.finishLoadMore() isLoadMore = false } else -> { dataBeans = dataRows!! } } weakReferenceHandler.sendEmptyMessage(2022070601) } }) groupViewModel.loadState.observe(this, { when (it) { LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中...") else -> DialogHelper.dismissLoadingDialog() } }) } private fun obtainDeviceListByPage() { groupViewModel.obtainDeviceListByPage(groupId, order, pageIndex) } private val callback = Handler.Callback { if (it.what == 2022070601) { if (isRefresh || isLoadMore) { deviceAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage("这里什么都没有") { pageIndex = 1 obtainDeviceListByPage() } } else { emptyView!!.hide() deviceAdapter = DeviceListAdapter(this, dataBeans) groupDeviceView!!.layoutManager = LinearLayoutManager(this) groupDeviceView!!.adapter = deviceAdapter deviceAdapter.setOnItemClickListener(object : DeviceListAdapter.OnItemClickListener { override fun onClicked(position: Int) { if (dataBeans[position].devcode.isNullOrBlank()) { "设备编号为空,无法查看历设备详情".show(this@GroupDeviceActivity) return } navigatePageTo<DeviceDetailActivity>(dataBeans[position].tubeId) } override fun onHistoryClicked(position: Int) { if (dataBeans[position].devcode.isNullOrBlank()) { "设备编号为空,无法查看历史数据".show(this@GroupDeviceActivity) return } navigatePageTo<HistoryDataActivity>(dataBeans[position].devcode) } }) } } } true } }