AddressFragment.kt 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package com.quansu.heifengwuliu.fragment
  2. import android.app.Activity
  3. import android.content.Intent
  4. import android.os.Bundle
  5. import android.text.TextUtils
  6. import android.view.LayoutInflater
  7. import android.view.ViewGroup
  8. import androidx.recyclerview.widget.LinearLayoutManager
  9. import com.quansu.heifengwuliu.activity.AddressAddActivity
  10. import com.quansu.heifengwuliu.adapter.AddressAdapter
  11. import com.quansu.heifengwuliu.base.MBRFragment
  12. import com.quansu.heifengwuliu.config.MIntentAction
  13. import com.quansu.heifengwuliu.databinding.FragmentAddressBinding
  14. import com.quansu.heifengwuliu.model.AddressBean
  15. import com.quansu.heifengwuliu.vmodel.AddressVModel
  16. import com.ysnows.base.net.IResp
  17. import com.ysnows.base.utils.B
  18. import com.ysnows.base.utils.UiSwitch
  19. import java.util.*
  20. //发货 -卸货地址
  21. class AddressFragment : MBRFragment<AddressVModel, AddressAdapter, FragmentAddressBinding>() {
  22. var type: String = ""
  23. var isShow: String = ""
  24. private var sideBarData = arrayListOf<String>()
  25. override fun __before(savedInstanceState: Bundle?) {
  26. super.__before(savedInstanceState)
  27. val arguments = arguments
  28. if (null != arguments) {
  29. type = arguments.getString("type")!!
  30. isShow = arguments.getString("isShow", "1")
  31. }
  32. }
  33. override fun vmClass(): Class<AddressVModel> {
  34. return AddressVModel::class.java
  35. }
  36. override fun init(savedInstanceState: Bundle?) {
  37. super.init(savedInstanceState)
  38. vm.inData(type, this)
  39. binding.sidebar.attachTipView(binding.tvTip)
  40. }
  41. override fun listeners() {
  42. super.listeners()
  43. binding.flAdd.setOnClickListener {
  44. //添加地址
  45. UiSwitch.bundleRes(this, AddressAddActivity::class.java,
  46. B.with().putString("type", type).ok(), MIntentAction.REQUEST_CODE_ONE)
  47. }
  48. binding.sidebar.setOnSelectedListener { position, text ->
  49. if (adapter().data.size > 0) {
  50. for (i in 0 until adapter().data.size) {
  51. var client = adapter().data[i]
  52. if (text == client.py) {
  53. (binding.recyclerView.layoutManager as LinearLayoutManager).scrollToPositionWithOffset(i, 0)
  54. }
  55. }
  56. }
  57. }
  58. }
  59. override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
  60. super.onActivityResult(requestCode, resultCode, data)
  61. if (MIntentAction.REQUEST_CODE_ONE == requestCode && resultCode == Activity.RESULT_OK) {
  62. //刷新列表
  63. onRefresh()
  64. }
  65. }
  66. override fun onListReceive(res: IResp<*>) {
  67. super.onListReceive(res)
  68. if (null != res) {
  69. sideBarData.clear()
  70. setSideBarData(res.data() as List<AddressBean>)
  71. }
  72. }
  73. private fun setSideBarData(data: List<AddressBean>) {
  74. for (i in data.indices) {
  75. if (!TextUtils.isEmpty(data[i].py)) {
  76. sideBarData.add(data[i].py.toString())
  77. }
  78. }
  79. //去重
  80. val list = removeDuplicateWithOrder(sideBarData)
  81. if (sideBarData != null && sideBarData.size > 0) {
  82. binding.sidebar.setData(list)
  83. } else {
  84. binding.sidebar.init()
  85. }
  86. }
  87. private fun removeDuplicateWithOrder(list: List<String>): ArrayList<String> {
  88. val set: MutableSet<String> = HashSet<String>()
  89. val newList: ArrayList<String> = ArrayList<String>()
  90. val iter = list.iterator()
  91. while (iter.hasNext()) {
  92. val element = iter.next()!!
  93. if (set.add(element)) newList.add(element)
  94. }
  95. return newList
  96. }
  97. override fun initAdapter(): AddressAdapter {
  98. return AddressAdapter(vm, isShow)
  99. }
  100. override fun binding(inflater: LayoutInflater, container: ViewGroup?): FragmentAddressBinding {
  101. return FragmentAddressBinding.inflate(layoutInflater, container, false)
  102. }
  103. override fun title(): String? {
  104. return null
  105. }
  106. }