package com.casic.br.fragment import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.br.R import com.casic.br.adapter.MessageListAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.extensions.showEmptyPage import com.casic.br.model.PushMessageModel import com.casic.br.vm.MessageViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_message.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_main_title.* class MessagePageFragment : KotlinBaseFragment() { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler } private lateinit var messageAdapter: MessageListAdapter private lateinit var messageViewModel: MessageViewModel private var dataBeans: MutableList<PushMessageModel.DataModel.RowsModel> = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false override fun initLayoutView(): Int = R.layout.fragment_message override fun setupTopBarLayout() { requireContext().initLayoutImmersionBar(rootView) leftTitleView.text = "消息" } override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) messageViewModel = ViewModelProvider(this)[MessageViewModel::class.java] messageViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { isRefresh -> { dataBeans.clear() dataBeans = dataRows!! messageLayout.finishRefresh() isRefresh = false } isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows!!) messageLayout.finishLoadMore() isLoadMore = false } else -> { dataBeans = dataRows!! } } weakReferenceHandler.sendEmptyMessage(2022101001) } }) } override fun initEvent() { messageLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainMessageListByPage() } messageLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainMessageListByPage() } } override fun onResume() { super.onResume() obtainMessageListByPage() } override fun observeRequestState() { } private fun obtainMessageListByPage() { messageViewModel.obtainMessageListByPage("", "", "", pageIndex) } private val callback = Handler.Callback { if (it.what == 2022101001) { if (isRefresh || isLoadMore) { messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 1 obtainMessageListByPage() } } else { emptyView!!.hide() messageAdapter = MessageListAdapter(requireContext(), dataBeans) messageRecyclerView.adapter = messageAdapter messageAdapter.setOnItemClickListener(object : MessageListAdapter.OnItemClickListener { override fun onDeleteClicked(position: Int) { messageViewModel.deleteMessageById(dataBeans[position].id) dataBeans.removeAt(position) messageAdapter.notifyItemRemoved(position) messageAdapter.notifyItemRangeChanged( position, dataBeans.size - position ) } override fun onShowMoreClicked(position: Int) { // deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) // //更改数据库里通知状态 // DataBaseManager.instance.updateLocaleMessageById( // userId, dataBeans[position].messageId // ) // messageAdapter.notifyItemChanged(position) // messageAdapter.notifyItemRangeChanged( // position, dataBeans.size - position // ) } }) } } } true } }