WidgetRoundSearchBar.kt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package com.quansu.heifengwuliu.widget
  2. import android.content.Context
  3. import android.util.AttributeSet
  4. import android.view.LayoutInflater
  5. import android.widget.LinearLayout
  6. import androidx.databinding.DataBindingUtil
  7. import com.hwangjr.rxbus.RxBus
  8. import com.hwangjr.rxbus.annotation.Subscribe
  9. import com.hwangjr.rxbus.annotation.Tag
  10. import com.qmuiteam.qmui.kotlin.onClick
  11. import com.quansu.heifengwuliu.R
  12. import com.quansu.heifengwuliu.activity.MainActivity
  13. import com.quansu.heifengwuliu.adapter.FuncAdapter
  14. import com.quansu.heifengwuliu.config.ConfigRx
  15. import com.quansu.heifengwuliu.databinding.WidgetRoundSearchBarBinding
  16. import com.quansu.heifengwuliu.model.Func
  17. import com.quansu.heifengwuliu.utils.func.FuncAwoke
  18. import com.ysnows.base.utils.UiSwitch
  19. import com.ysnows.base.view.RxBusView
  20. open class WidgetRoundSearchBar constructor(context: Context?, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : LinearLayout(context, attrs, defStyleAttr), RxBusView {
  21. lateinit var binding: WidgetRoundSearchBarBinding
  22. private val funcAdapter = FuncAdapter()
  23. constructor(context: Context?, attrs: AttributeSet?) : this(context, attrs, 0)
  24. private fun initView(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) {
  25. binding = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.widget_round_search_bar, this, true)
  26. binding.recyclerView.adapter = funcAdapter
  27. render("init")
  28. binding.tvBar.onClick { UiSwitch.single(context, MainActivity::class.java) }
  29. }
  30. @Subscribe(tags = [Tag(ConfigRx.ROUND_SEARCH_BAR_CHANGED), Tag(ConfigRx.ROUND_SEARCH_BAR_ITEM_ADDED)])
  31. fun render(from: String) {
  32. val leftFunc = Func.findLeftFunc()
  33. binding.funcLeft = leftFunc
  34. binding.imgFuncLeft.setOnClickListener { FuncAwoke.awokeFunc(context, leftFunc) }
  35. funcAdapter.setList(Func.findRightFuncList())
  36. }
  37. init {
  38. initView(context, attrs, defStyleAttr)
  39. }
  40. override fun onAttachedToWindow() {
  41. super.onAttachedToWindow()
  42. register()
  43. }
  44. override fun onDetachedFromWindow() {
  45. super.onDetachedFromWindow()
  46. unRegister()
  47. }
  48. override val isRxbus: Boolean
  49. get() = true
  50. override fun register() {
  51. if (isRxbus) RxBus.get().register(this)
  52. }
  53. override fun unRegister() {
  54. if (isRxbus) RxBus.get().unregister(this)
  55. }
  56. }