FamilyAdapter.kt 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package com.rdiot.yx485.adapter
  2. import android.view.LayoutInflater
  3. import android.view.ViewGroup
  4. import androidx.databinding.DataBindingUtil
  5. import androidx.recyclerview.widget.RecyclerView
  6. import com.rdiot.yx485.R
  7. import com.rdiot.yx485.bean.FamilyData
  8. import com.rdiot.yx485.bean.RoomData
  9. import com.rdiot.yx485.databinding.ItemFamilyBinding
  10. import com.rdiot.yx485.util.setClickLimitListener
  11. /**
  12. * 家庭适配器
  13. * @author mR2hao
  14. * @date 2022/12/3
  15. */
  16. class FamilyAdapter(
  17. private val mListener: OnItemClickListener? = null
  18. ) : RecyclerView.Adapter<FamilyAdapter.BaseViewHolder>() {
  19. inner class BaseViewHolder(val dataBinding: ItemFamilyBinding) :
  20. RecyclerView.ViewHolder(dataBinding.root)
  21. private var mList: MutableList<FamilyData> = mutableListOf()
  22. interface OnItemClickListener {
  23. fun onItemClicked(position: Int, familyData: FamilyData)
  24. }
  25. override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
  26. val binding: ItemFamilyBinding = DataBindingUtil.inflate(
  27. LayoutInflater.from(parent.context),
  28. R.layout.item_family,
  29. parent,
  30. false
  31. )
  32. return BaseViewHolder(binding)
  33. }
  34. override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
  35. val bean = mList[position]
  36. holder.dataBinding.familyData = bean
  37. holder.dataBinding.clItem.setClickLimitListener {
  38. mListener?.onItemClicked(position, bean)
  39. }
  40. }
  41. @Synchronized
  42. fun update(list: List<FamilyData>) {
  43. if (list.size < this.mList.size) {
  44. mList.clear()
  45. mList.addAll(list)
  46. notifyDataSetChanged()
  47. } else {
  48. for (i in list.indices) {
  49. if (i < this.mList.size) {
  50. if (this.mList[i] != list[i]) {
  51. this.mList[i] = list[i]
  52. notifyItemChanged(i)
  53. }
  54. } else {
  55. this.mList.add(list[i])
  56. notifyItemInserted(i)
  57. }
  58. }
  59. }
  60. }
  61. override fun getItemCount() = mList.size
  62. }