SettingAdapter.kt 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. package com.cr.adapter
  2. import android.content.Context
  3. import android.view.View
  4. import android.view.ViewGroup
  5. import android.widget.CompoundButton
  6. import android.widget.CompoundButton.OnCheckedChangeListener
  7. import android.widget.ImageView
  8. import android.widget.Switch
  9. import android.widget.TextView
  10. import com.cr.cruav.R
  11. import com.cr.common.CrFontManager
  12. import com.cr.models.SetItemModel
  13. import com.cr.models.SettingAction
  14. /**
  15. * 操作系统:MAC系统
  16. * 创建者:王成
  17. * 创建日期:2023/4/11 10:01
  18. * 描述:设置项适配器
  19. */
  20. class SettingAdapter @JvmOverloads constructor(
  21. context: Context? = null,
  22. dataList: MutableList<SetItemModel>
  23. ) : CrAdapter<SetItemModel>(context, dataList), View.OnClickListener, OnCheckedChangeListener {
  24. /**
  25. * 对外接口
  26. */
  27. interface SettingListener {
  28. // todo: 2023/4/11 动作监听
  29. fun onAction(action: SettingAction)
  30. // todo: 2023/4/11 开关监听
  31. fun onSwitch(action: SettingAction, isChecked: Boolean)
  32. }
  33. // define: 2023/4/11 定义监听
  34. var listener: SettingListener? = null
  35. /**
  36. * 重写获取视图方法
  37. * @param position Int
  38. * @param convertView View?
  39. * @param viewGroup ViewGroup?
  40. * @return View?
  41. */
  42. override fun getView(position: Int, convertView: View?, viewGroup: ViewGroup?): View? {
  43. var holder: ViewHolder
  44. var view = convertView
  45. if (convertView == null) {
  46. holder = ViewHolder()
  47. view = inflater!!.inflate(R.layout.item_set, null)
  48. holder.imageView = view.findViewById(R.id.item_set_img)
  49. holder.lblTitle = view.findViewById(R.id.item_set_title)
  50. holder.icoArrow = view.findViewById(R.id.item_set_arrow)
  51. CrFontManager.setTextView(context!!, holder.icoArrow!!, R.string.ico_arrow)
  52. holder.aSwitch = view.findViewById(R.id.item_set_switch)
  53. view.tag = holder
  54. } else {
  55. holder = view!!.tag as ViewHolder
  56. }
  57. var model: SetItemModel = dataList!![position]
  58. holder.lblTitle?.text = model.title
  59. holder.imageView?.setImageDrawable(context!!.resources.getDrawable(model.imageId))
  60. holder.aSwitch?.visibility = if (model.isSwitch) View.VISIBLE else View.GONE
  61. // todo: 2023/4/11 设置开关状态
  62. holder.aSwitch?.isChecked = model.switchIsOn
  63. // todo: 2023/4/11 设置箭头
  64. holder.icoArrow?.visibility = if (model.isArrow) View.VISIBLE else View.GONE
  65. // todo: 2023/4/11 特殊处理
  66. if (model.isSwitch) {
  67. holder.lblTitle?.isClickable = false
  68. holder.aSwitch?.tag = model
  69. holder.aSwitch?.setOnCheckedChangeListener(this)
  70. } else {
  71. holder.lblTitle?.isClickable = true
  72. holder.lblTitle?.tag = model
  73. holder.lblTitle?.setOnClickListener(this)
  74. }
  75. return view
  76. }
  77. companion object {
  78. class ViewHolder {
  79. var imageView: ImageView? = null
  80. var lblTitle: TextView? = null
  81. var icoArrow: TextView? = null
  82. var aSwitch: Switch? = null
  83. }
  84. }
  85. /**
  86. * 视图点击事件
  87. * @param p0 View
  88. */
  89. override fun onClick(p0: View?) {
  90. var model:SetItemModel = p0?.tag as SetItemModel
  91. if(listener != null) model.action?.let { listener?.onAction(it) }
  92. }
  93. /**
  94. * 开关事件
  95. * @param p0 CompoundButton
  96. * @param p1 Boolean
  97. */
  98. override fun onCheckedChanged(p0: CompoundButton?, p1: Boolean) {
  99. var model:SetItemModel = p0?.tag as SetItemModel
  100. if(listener != null) model.action?.let { listener?.onSwitch(it,p1) }
  101. }
  102. }