Newer
Older
CasicSmartTube / app / src / main / java / com / casic / smarttube / fragment / OverviewFragment.kt
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
                )
            }
        }
    }
}