class FarmAdapter(val mFarms: ArrayList, val itemClick: (FarmModel) -> Unit) : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.item_farm, parent, false) return FarmAdapter.ViewHolder(view, itemClick) } override fun onBindViewHolder(holder: FarmAdapter.ViewHolder, position: Int) { holder.bindForecast(mFarms[position]) } override fun getItemCount() = mFarms.size class ViewHolder(view: View, val itemClick: (FarmModel) -> Unit) : RecyclerView.ViewHolder(view) { fun bindForecast(farm: FarmModel) { with(farm) { itemView.textViewFarm.text = farm.name itemView.constraintLayoutItemFarm.setOnClickListener{ itemClick(this) } } } } fun addItem(farm : FarmModel) { mFarms.add(farm) this.notifyDataSetChanged() } fun updateItem(updated: FarmModel) { mFarms .filter { it.key == updated.key } .forEach { it.name = updated.name } this.notifyDataSetChanged() } fun removeItem(farm: FarmModel) { mFarms.remove(farm) this.notifyDataSetChanged() } }