package com.casic.smarttube.fragment import android.os.Bundle import android.view.LayoutInflater import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.databinding.FragmentOverviewBinding import com.casic.smarttube.extensions.showEmptyPage import com.casic.smarttube.model.ProjectGroupModel import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel 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.widget.dialog.AlertInputDialog class OverviewFragment : KotlinBaseFragment<FragmentOverviewBinding>() { private lateinit var groupViewModel: ProjectGroupViewModel private var dataBeans: MutableList<ProjectGroupModel.DataModel> = ArrayList() private lateinit var groupListAdapter: OverviewGroupListAdapter private var clickedPosition = 0 override fun initViewBinding( inflater: LayoutInflater, container: ViewGroup? ): FragmentOverviewBinding { return FragmentOverviewBinding.inflate(inflater, container, false) } override fun setupTopBarLayout() { binding.titleView.text = "概览" } override fun initOnCreate(savedInstanceState: Bundle?) { groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) } override fun onResume() { groupViewModel.obtainProGroupList() super.onResume() } override fun observeRequestState() { } override fun initEvent() { binding.rightOptionView.setOnClickListener { groupViewModel.obtainProGroupList() "刷新数据中,请稍后".show(requireContext()) } groupViewModel.groupModel.observe(this) { if (it.code == 200) { if (it.data.size == 0) { binding.emptyInclude.emptyView.showEmptyPage("这里什么都没有") { groupViewModel.obtainProGroupList() } } else { binding.emptyInclude.emptyView.hide() dataBeans.clear() dataBeans = it.data groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) binding.groupRecyclerView.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo<GroupDeviceActivity>(it.data[position].groupId) } override fun onLongClicked(position: Int) { //标记被点击的item位置 clickedPosition = position AlertInputDialog.Builder() .setContext(requireContext()) .setTitle("提示") .setHintMessage("请输入新的项目名") .setNegativeButton("取消") .setPositiveButton("确定") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onCancelClick() { } override fun onConfirmClick(value: String) { groupViewModel.changeGroupId( it.data[position].groupId, value ) } }) .build().show() } }) } } } groupViewModel.changeGroupResult.observe(this) { if (it.code == 200) { dataBeans.removeAt(clickedPosition) groupListAdapter.notifyItemRemoved(clickedPosition) groupListAdapter.notifyItemRangeChanged( clickedPosition, dataBeans.size - clickedPosition ) } } } }