AmountSelectDialog.kt 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package com.develop.common.dialog
  2. import android.os.Bundle
  3. import android.view.LayoutInflater
  4. import android.view.View
  5. import android.view.ViewGroup
  6. import android.widget.TextView
  7. import com.develop.base.ext.updateText
  8. import com.develop.base.mvvm.FullScreenTransparentDialog
  9. import com.develop.common.data_repo.db.entity.DevRecipePortionSize
  10. import com.develop.common.databinding.DialogAmountSelectBinding
  11. import com.drake.brv.utils.linear
  12. import com.drake.brv.utils.setup
  13. import com.develop.common.R
  14. import com.drake.brv.utils.models
  15. class AmountSelectDialog(
  16. private val data: List<DevRecipePortionSize>,
  17. private val onSelect: (data: DevRecipePortionSize) -> Unit
  18. ) : FullScreenTransparentDialog() {
  19. private lateinit var binding: DialogAmountSelectBinding
  20. override fun onCreateView(
  21. inflater: LayoutInflater,
  22. container: ViewGroup?,
  23. savedInstanceState: Bundle?
  24. ): View {
  25. binding = DialogAmountSelectBinding.inflate(
  26. inflater, container, false
  27. )
  28. binding.ivCancel.setOnClickListener {
  29. removeSelf()
  30. }
  31. binding.root.setOnClickListener {
  32. removeSelf()
  33. }
  34. val wrappers = mutableListOf<Wrapper>()
  35. data.forEach {
  36. wrappers.add(Wrapper(it, false))
  37. }
  38. binding.clLayer.apply {
  39. linear()
  40. setup {
  41. addType<Wrapper>(R.layout.item_cook_portion_size_item)
  42. onBind {
  43. val tvJar = findView<TextView>(R.id.tv_jars)
  44. val model = getModel<Wrapper>()
  45. tvJar.updateText(model.data.portionSize + " JAR")
  46. tvJar.isSelected = model.selected
  47. }
  48. R.id.tv_jars.onClick {
  49. for (wrapper in wrappers) {
  50. wrapper.selected = false
  51. }
  52. val data = getModel<Wrapper>()
  53. data.selected = true
  54. onSelect(data.data)
  55. notifyDataSetChanged()
  56. }
  57. }
  58. }.models = wrappers
  59. return binding.root
  60. }
  61. class Wrapper(
  62. val data: DevRecipePortionSize,
  63. var selected: Boolean
  64. )
  65. }