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.AlarmListAdapter import com.casic.smarttube.extensions.showEmptyPage import com.casic.smarttube.model.AlarmListModel import com.casic.smarttube.vm.AlarmViewModel 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.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_alarm_management.* import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView import kotlinx.android.synthetic.main.activity_alarm_management.titleView import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: AlarmListAdapter private var dataBeans: MutableList<AlarmListModel.DataBean.RowsBean> = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" } override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) } override fun onResume() { obtainAlarmListByPage() super.onResume() } override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } alarmListLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() } alarmViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { isRefresh -> { dataBeans.clear() dataBeans = dataRows!! alarmListLayout.finishRefresh() isRefresh = false } isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(this) } dataBeans.addAll(dataRows!!) alarmListLayout.finishLoadMore() isLoadMore = false } else -> { dataBeans = dataRows!! } } weakReferenceHandler.sendEmptyMessage(2022062501) } }) } private fun obtainAlarmListByPage() { alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) } private val callback = Handler.Callback { if (it.what == 2022062501) { if (isRefresh || isLoadMore) { alarmListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { emptyView!!.hide() alarmListAdapter = AlarmListAdapter(this, dataBeans) alarmListView!!.layoutManager = LinearLayoutManager(this) alarmListView!!.adapter = alarmListAdapter alarmListAdapter.setOnItemClickListener(object : AlarmListAdapter.OnItemClickListener { override fun onClicked(position: Int) { val wellId = dataBeans[position].wellId.toString() if (wellId.isBlank()) { "井编号异常,无法查看详情".show(this@AlarmManagementActivity) return } navigatePageTo<WellDetailActivity>(wellId) } }) } } } true } }