package com.casic.smarttube.fragment import androidx.lifecycle.ViewModelProvider import com.casic.smarttube.R import com.casic.smarttube.adapter.OverviewGroupListAdapter 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 import kotlinx.android.synthetic.main.fragment_overview.groupRecyclerView import kotlinx.android.synthetic.main.fragment_overview.rightOptionView import kotlinx.android.synthetic.main.fragment_overview.titleView import kotlinx.android.synthetic.main.include_empty_view.emptyView class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel private var dataBeans: MutableList<ProjectGroupModel.DataModel> = ArrayList() private lateinit var groupListAdapter: OverviewGroupListAdapter private var clickedPosition = 0 override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { titleView.text = "概览" } override fun initData() { groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) } override fun onResume() { groupViewModel.obtainProGroupList() super.onResume() } override fun observeRequestState() { } override fun initEvent() { rightOptionView.setOnClickListener { groupViewModel.obtainProGroupList() "刷新数据中,请稍后".show(requireContext()) } groupViewModel.groupModel.observe(this) { if (it.code == 200) { if (it.data.size == 0) { emptyView!!.showEmptyPage("这里什么都没有") { groupViewModel.obtainProGroupList() } } else { emptyView!!.hide() dataBeans.clear() dataBeans = it.data groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) 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 ) } } } }