控制网spinner更换为ListPopupWindow

main
chenglifeng 10 months ago
parent bf36d7c3d0
commit 328e7b879a
  1. 2
      app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt
  2. 2
      app/src/main/java/com/project/survey/network/Api.kt
  3. 45
      app/src/main/java/com/project/survey/ui/controlnet/FirstControlNetworkActivity.kt
  4. 110
      app/src/main/java/com/project/survey/ui/controlnet/SpecialControlNetworkActivity.kt
  5. 17
      app/src/main/res/layout/activity_first_control_network.xml
  6. 32
      app/src/main/res/layout/activity_special_control_network.xml

@ -73,7 +73,7 @@ class ProjectViewModel : BaseViewModel() {
*/
fun loadFuncPerm(bean: ApprovalBean) {
launch {
val res = api.loadFuncPerm()
val res = api.loadFuncPerm(funcCode = bean.funcCode)
if (res.success) {
_loadFuncPermResponse.postValue(bean)
} else {

@ -100,7 +100,7 @@ interface Api {
@GET("je/rbac/permission/loadFuncPerm")
suspend fun loadFuncPerm(
@Header("projectId") projectId: String = SPUtils.getString(SPConstants.PROJECT_ID),
@Query("funcCode") funcCode: String = "BD_CGSP"
@Query("funcCode") funcCode: String
): HttpResult<Any>
/**

@ -1,9 +1,16 @@
package com.project.survey.ui.controlnet
import android.graphics.drawable.BitmapDrawable
import android.view.View
import android.widget.AdapterView
import android.widget.AdapterView.OnItemClickListener
import android.widget.ArrayAdapter
import androidx.activity.viewModels
import androidx.appcompat.widget.ListPopupWindow
import com.bingce.utils.ThreadPoolUtil
import com.project.survey.R
import com.project.survey.databinding.ActivityFirstControlNetworkBinding
import com.project.survey.extend.setOnClickNoRepeatListener
import com.project.survey.extend.smartDismiss
import com.project.survey.logic.viewmodel.ControlNetViewModel
import com.project.survey.model.ControlNetVersionBean
@ -35,10 +42,14 @@ class FirstControlNetworkActivity : BaseBindingActivity<ActivityFirstControlNetw
private val adapter by lazy { ControlNetFirstAdapter() }
private var currentPage = 1
private var currentVersion: String? = null
private val listPopupWindow by lazy { ListPopupWindow(this) }
private val versionList = arrayListOf(FirstControlNetworkVersionBean("版本号"))
override fun initView() {
immersionToolbar(mBinding.toolbar, R.string.head_control_network)
listPopupWindow.anchorView = mBinding.llSpinner
mBinding.smartRefreshLayout.setOnRefreshLoadMoreListener(this)
// mBinding.recyclerView.addItemDecoration(TransparentDividerDecoration(this))
mBinding.recyclerView.adapter = adapter
@ -51,9 +62,13 @@ class FirstControlNetworkActivity : BaseBindingActivity<ActivityFirstControlNetw
}
// 版本号列表
viewModel.firstControlNetworkVersionResponse.observe(this) {
val list = arrayListOf(FirstControlNetworkVersionBean("版本号"))
list.addAll(it)
mBinding.spinner.setItems(list)
versionList.addAll(it)
// mBinding.spinner.setItems(list)
val adapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, versionList.map { it.KZWZBCG_VERSION })
listPopupWindow.setAdapter(adapter)
mBinding.tvSpinner.text = versionList[0].KZWZBCG_VERSION
}
viewModel.controlNetCGListResponse.observe(this) {
mBinding.smartRefreshLayout.smartDismiss()
@ -91,16 +106,26 @@ class FirstControlNetworkActivity : BaseBindingActivity<ActivityFirstControlNetw
}
override fun initListener() {
mBinding.spinner.setOnItemSelectedListener { _, _, _, item ->
val versionBean = item as FirstControlNetworkVersionBean
currentVersion =
if ("版本号" == versionBean.KZWZBCG_VERSION) null else versionBean.KZWZBCG_VERSION
mBinding.llSpinner.setOnClickNoRepeatListener {
listPopupWindow.show()
}
listPopupWindow.setOnItemClickListener { adapterView, view, i, l ->
listPopupWindow.dismiss()
currentVersion = if (i == 0) null else versionList[i].KZWZBCG_VERSION
mBinding.tvSpinner.text = versionList[i].KZWZBCG_VERSION
currentPage = 1
fetchData()
ThreadPoolUtil.executeInMainDelay300 {
mBinding.spinner.collapse()
}
}
// mBinding.spinner.setOnItemSelectedListener { _, _, _, item ->
// val versionBean = item as FirstControlNetworkVersionBean
// currentVersion =
// if ("版本号" == versionBean.KZWZBCG_VERSION) null else versionBean.KZWZBCG_VERSION
// currentPage = 1
// fetchData()
// ThreadPoolUtil.executeInMainDelay300 {
// mBinding.spinner.collapse()
// }
// }
}
private fun fetchData() {

@ -1,9 +1,12 @@
package com.project.survey.ui.controlnet
import android.widget.ArrayAdapter
import androidx.activity.viewModels
import androidx.appcompat.widget.ListPopupWindow
import com.bingce.utils.ThreadPoolUtil
import com.project.survey.R
import com.project.survey.databinding.ActivitySpecialControlNetworkBinding
import com.project.survey.extend.setOnClickNoRepeatListener
import com.project.survey.extend.smartDismiss
import com.project.survey.logic.viewmodel.ControlNetViewModel
import com.project.survey.model.ControlNetVersionBean
@ -36,11 +39,22 @@ class SpecialControlNetworkActivity :
private var currentPage = 1
private var currentVersion: String? = null
private var currentName: String? = null // 控制网名称
private var versionList = ArrayList<SpecialControlNetworkVersionBean>()
// private var versionList = ArrayList<SpecialControlNetworkVersionBean>()
private var versionNameList =
arrayListOf(SpecialControlNetworkVersionBean("版本号", "控制网名称"))
private var versionList = ArrayList<String>()
private val nameListPopupWindow by lazy { ListPopupWindow(this) }
private val versionListPopupWindow by lazy { ListPopupWindow(this) }
private var versionAdapter: ArrayAdapter<String>? = null
override fun initView() {
immersionToolbar(mBinding.toolbar, R.string.dedicated_control_network)
nameListPopupWindow.anchorView = mBinding.tvSpinnerName
versionListPopupWindow.anchorView = mBinding.tvSpinnerVersion
mBinding.smartRefreshLayout.setOnRefreshLoadMoreListener(this)
// mBinding.recyclerView.addItemDecoration(TransparentDividerDecoration(this))
mBinding.recyclerView.adapter = adapter
@ -53,12 +67,23 @@ class SpecialControlNetworkActivity :
}
// 版本号列表
viewModel.specialControlNetworkVersionResponse.observe(this) {
versionList.addAll(it)
versionList.add(0, SpecialControlNetworkVersionBean("版本号", "控制网名称"))
mBinding.spinnerName.setItems(versionList.map { v -> v.KZW_NAME })
val versionList = versionList[0].version_array.split(",").toList()
mBinding.spinnerVersion.setItems(versionList)
versionNameList.addAll(it)
// versionList.add(0, SpecialControlNetworkVersionBean("版本号", "控制网名称"))
// mBinding.spinnerName.setItems(versionList.map { v -> v.KZW_NAME })
val nameAdapter = ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
versionNameList.map { it.KZW_NAME })
nameListPopupWindow.setAdapter(nameAdapter)
mBinding.tvSpinnerName.text = versionNameList[0].KZW_NAME
versionList.clear()
versionList.addAll(versionNameList[0].version_array.split(",").toList())
versionAdapter =
ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, versionList)
versionListPopupWindow.setAdapter(versionAdapter)
mBinding.tvSpinnerVersion.text = versionList[0]
// mBinding.spinnerVersion.setItems(versionList)
}
viewModel.controlNetworkListResponse.observe(this) {
mBinding.smartRefreshLayout.smartDismiss()
@ -96,34 +121,65 @@ class SpecialControlNetworkActivity :
override fun initListener() {
// 控制网名称
mBinding.spinnerName.setOnItemSelectedListener { view, position, id, item ->
val bean = item as String
currentName = if ("控制网名称" == bean) null else bean
mBinding.tvSpinnerName.setOnClickNoRepeatListener {
nameListPopupWindow.show()
}
nameListPopupWindow.setOnItemClickListener { adapterView, view, i, l ->
nameListPopupWindow.dismiss()
currentName = if (i == 0) null else versionNameList[i].KZW_NAME
mBinding.tvSpinnerName.text = currentName ?: "控制网名称"
versionList.clear()
versionList.addAll(versionNameList[i].version_array.split(",").toList())
// val versionList = versionList[position].version_array.split(",").toList()
versionAdapter?.notifyDataSetChanged()
currentVersion =
if (currentName == null) null else if (versionList.isEmpty()) null else versionList[0]
mBinding.tvSpinnerVersion.text = currentVersion ?: "版本号"
val versionList = versionList[position].version_array.split(",").toList()
mBinding.spinnerVersion.setItems(versionList)
currentVersion = if ("控制网名称" == bean)
null
else {
if (versionList.isEmpty()) null else versionList[0].toString()
}
currentPage = 1
fetchData()
ThreadPoolUtil.executeInMainDelay300 {
mBinding.spinnerName.collapse()
}
}
// mBinding.spinnerName.setOnItemSelectedListener { view, position, id, item ->
// val bean = item as String
// currentName = if ("控制网名称" == bean) null else bean
//
// val versionList = versionList[position].version_array.split(",").toList()
// mBinding.spinnerVersion.setItems(versionList)
// currentVersion = if ("控制网名称" == bean)
// null
// else {
// if (versionList.isEmpty()) null else versionList[0].toString()
// }
// currentPage = 1
// fetchData()
// ThreadPoolUtil.executeInMainDelay300 {
// mBinding.spinnerName.collapse()
// }
// }
// 版本号
mBinding.spinnerVersion.setOnItemSelectedListener { _, _, _, item ->
val version = item as String
currentVersion =
if ("版本号" == version) null else version
mBinding.tvSpinnerVersion.setOnClickNoRepeatListener {
versionListPopupWindow.show()
}
versionListPopupWindow.setOnItemClickListener { adapterView, view, i, l ->
versionListPopupWindow.dismiss()
currentVersion = if (i == 0) null else versionList[i]
mBinding.tvSpinnerVersion.text = versionList[i]
currentPage = 1
fetchData()
ThreadPoolUtil.executeInMainDelay300 {
mBinding.spinnerVersion.collapse()
}
}
// mBinding.spinnerVersion.setOnItemSelectedListener { _, _, _, item ->
// val version = item as String
// currentVersion =
// if ("版本号" == version) null else version
// currentPage = 1
// fetchData()
// ThreadPoolUtil.executeInMainDelay300 {
// mBinding.spinnerVersion.collapse()
// }
// }
adapter.setOnItemClickListener { adapter, _, position ->
adapter.getItem(position)?.let { bean ->
ControlPointActivity.start(bean.KZW_NAME)

@ -39,12 +39,23 @@
android:layout_marginTop="@dimen/sw_7dp"
android:background="@drawable/bg_search">
<com.project.survey.widget.materialspinner.MaterialSpinner
android:id="@+id/spinner"
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvSpinner"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:textColor="@color/text_color_20"
android:textSize="@dimen/sw_11sp" />
android:textSize="@dimen/sw_11sp"
android:paddingHorizontal="@dimen/sw_16dp"
android:drawableEnd="@drawable/ms_ic_arrow_up"
tools:text="版本号" />
<!-- <com.project.survey.widget.materialspinner.MaterialSpinner-->
<!-- android:id="@+id/spinner"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:textColor="@color/text_color_20"-->
<!-- android:textSize="@dimen/sw_11sp" />-->
</FrameLayout>

@ -45,12 +45,22 @@
android:layout_weight="1"
android:background="@drawable/bg_search">
<com.project.survey.widget.materialspinner.MaterialSpinner
android:id="@+id/spinnerName"
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvSpinnerName"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:textColor="@color/text_color_20"
android:textSize="@dimen/sw_11sp" />
android:textSize="@dimen/sw_11sp"
android:paddingHorizontal="@dimen/sw_16dp"
android:drawableEnd="@drawable/ms_ic_arrow_up"
tools:text="控制网名称" />
<!-- <com.project.survey.widget.materialspinner.MaterialSpinner-->
<!-- android:id="@+id/spinnerName"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:textColor="@color/text_color_20"-->
<!-- android:textSize="@dimen/sw_11sp" />-->
</FrameLayout>
<View
@ -63,12 +73,22 @@
android:layout_weight="1"
android:background="@drawable/bg_search">
<com.project.survey.widget.materialspinner.MaterialSpinner
android:id="@+id/spinnerVersion"
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvSpinnerVersion"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:textColor="@color/text_color_20"
android:textSize="@dimen/sw_11sp" />
android:textSize="@dimen/sw_11sp"
android:paddingHorizontal="@dimen/sw_16dp"
android:drawableEnd="@drawable/ms_ic_arrow_up"
tools:text="版本号" />
<!-- <com.project.survey.widget.materialspinner.MaterialSpinner-->
<!-- android:id="@+id/spinnerVersion"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:textColor="@color/text_color_20"-->
<!-- android:textSize="@dimen/sw_11sp" />-->
</FrameLayout>

Loading…
Cancel
Save