From 31991ebe0021205e2dd490ed29ab0fa3e22f3355 Mon Sep 17 00:00:00 2001 From: squallzhjch Date: Thu, 17 Aug 2023 17:37:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=9A=E7=82=B9=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../omqs/ui/activity/map/MainActivity.kt | 20 ++++++++ .../omqs/ui/activity/map/MainViewModel.kt | 9 +++- .../omqs/ui/fragment/itemlist/ItemAdapter.kt | 30 +++++++++++ .../ui/fragment/itemlist/ItemListFragment.kt | 51 +++++++++++++++++++ app/src/main/res/layout/adapter_item.xml | 15 ++++++ .../main/res/layout/fragment_item_list.xml | 41 +++++++++++++++ .../main/res/layout/fragment_task_manager.xml | 3 +- .../collect/library/enums/DataCodeEnum.kt | 14 ++++- 8 files changed, 180 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/navinfo/omqs/ui/fragment/itemlist/ItemAdapter.kt create mode 100644 app/src/main/java/com/navinfo/omqs/ui/fragment/itemlist/ItemListFragment.kt create mode 100644 app/src/main/res/layout/adapter_item.xml create mode 100644 app/src/main/res/layout/fragment_item_list.xml diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt index 7ebdb43a..dd6b949b 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt @@ -38,6 +38,7 @@ import com.navinfo.omqs.http.offlinemapdownload.OfflineMapDownloadManager import com.navinfo.omqs.tools.LayerConfigUtils import com.navinfo.omqs.ui.activity.BaseActivity import com.navinfo.omqs.ui.fragment.console.ConsoleFragment +import com.navinfo.omqs.ui.fragment.itemlist.ItemListFragment import com.navinfo.omqs.ui.fragment.offlinemap.OfflineMapFragment import com.navinfo.omqs.ui.fragment.qsrecordlist.QsRecordListFragment import com.navinfo.omqs.ui.fragment.signMoreInfo.SignMoreInfoFragment @@ -390,6 +391,25 @@ class MainActivity : BaseActivity() { } } + viewModel.liveDataItemList.observe(this) { + if (leftFragment == null || leftFragment !is ItemListFragment) { + leftFragment = ItemListFragment { + binding.mainActivityLeftFragment.visibility = View.GONE + supportFragmentManager.beginTransaction().remove(leftFragment!!).commit() + leftFragment = null + null + } + binding.mainActivityLeftFragment.visibility = View.VISIBLE + supportFragmentManager.beginTransaction() + .replace(R.id.main_activity_left_fragment, leftFragment!!) + .commit() + } else { + supportFragmentManager.beginTransaction() + .show(leftFragment!!) + .commit() + } + } + lifecycleScope.launch { // 初始化地图图层控制接收器 FlowEventBus.subscribe>( diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt index 8beb2dbb..4cecddfa 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt @@ -112,6 +112,11 @@ class MainViewModel @Inject constructor( */ val liveDataSignMoreInfo = MutableLiveData() + /** + * 捕捉到的itemList + */ + val liveDataItemList = MutableLiveData>() + private var traceTag: String = "TRACE_TAG" /** @@ -473,8 +478,10 @@ class MainViewModel @Inject constructor( ) ) - if (itemList.size > 0) { + if (itemList.size == 1) { liveDataSignMoreInfo.postValue(itemList[0]) + } else { + liveDataItemList.postValue(itemList) } } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/itemlist/ItemAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/itemlist/ItemAdapter.kt new file mode 100644 index 00000000..5667a982 --- /dev/null +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/itemlist/ItemAdapter.kt @@ -0,0 +1,30 @@ +package com.navinfo.omqs.ui.fragment.itemlist + +import android.view.LayoutInflater +import android.view.ViewGroup +import com.navinfo.collect.library.data.entity.RenderEntity +import com.navinfo.collect.library.enums.DataCodeEnum +import com.navinfo.omqs.databinding.AdapterItemBinding +import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter +import com.navinfo.omqs.ui.other.BaseViewHolder + +class ItemAdapter(private var itemListener: ((Int, RenderEntity) -> Unit?)? = null) : + BaseRecyclerViewAdapter() { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder { + val viewBinding = + AdapterItemBinding.inflate(LayoutInflater.from(parent.context), parent, false) + return BaseViewHolder(viewBinding) + } + + override fun onBindViewHolder(holder: BaseViewHolder, position: Int) { + val binding = holder.viewBinding as AdapterItemBinding + var renderEntity = data[position] + + binding.name.text = DataCodeEnum.findTableNameByCode(renderEntity.code) + binding.root.setOnClickListener { + if (itemListener != null) { + itemListener!!.invoke(position, renderEntity) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/itemlist/ItemListFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/itemlist/ItemListFragment.kt new file mode 100644 index 00000000..cfbab4d6 --- /dev/null +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/itemlist/ItemListFragment.kt @@ -0,0 +1,51 @@ +package com.navinfo.omqs.ui.fragment.itemlist + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.activityViewModels +import androidx.recyclerview.widget.LinearLayoutManager +import com.navinfo.omqs.databinding.FragmentItemListBinding +import com.navinfo.omqs.ui.activity.map.MainViewModel +import com.navinfo.omqs.ui.fragment.BaseFragment +import com.navinfo.omqs.ui.widget.RecycleViewDivider +import dagger.hilt.android.AndroidEntryPoint + + +@AndroidEntryPoint +class ItemListFragment(private var backListener: ((ItemListFragment) -> Unit?)? = null) : + BaseFragment() { + private var _binding: FragmentItemListBinding? = null + private val binding get() = _binding!! + private val viewModel by activityViewModels() + private val adapter by lazy { + ItemAdapter { _, data -> + viewModel.showSignMoreInfo(data) + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? + ): View { + _binding = FragmentItemListBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + binding.itemListRecyclerview.layoutManager = LinearLayoutManager(requireContext()) + binding.itemListRecyclerview.adapter = adapter + binding.itemListRecyclerview.addItemDecoration( + RecycleViewDivider( + requireContext(), + LinearLayoutManager.VERTICAL + ) + ) + viewModel.liveDataItemList.observe(viewLifecycleOwner) { + adapter.refreshData(it) + } + binding.taskBack.setOnClickListener { + backListener?.invoke(this) + } + } +} diff --git a/app/src/main/res/layout/adapter_item.xml b/app/src/main/res/layout/adapter_item.xml new file mode 100644 index 00000000..38b68113 --- /dev/null +++ b/app/src/main/res/layout/adapter_item.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_item_list.xml b/app/src/main/res/layout/fragment_item_list.xml new file mode 100644 index 00000000..1a043b4c --- /dev/null +++ b/app/src/main/res/layout/fragment_item_list.xml @@ -0,0 +1,41 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_manager.xml b/app/src/main/res/layout/fragment_task_manager.xml index f533d173..d2c85a65 100644 --- a/app/src/main/res/layout/fragment_task_manager.xml +++ b/app/src/main/res/layout/fragment_task_manager.xml @@ -1,5 +1,6 @@ -