From 18987c3b31c2b8fe1a911297e8b104d583dd5c83 Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Thu, 10 Mar 2022 20:33:40 -0600 Subject: - Card on map now updates info when there is a change - Huge device list performance improvements on search and updates --- .../trackermap/TrackerMap/android/devices/DevicesAdapter.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt') diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt index 4cfd6b5..0fbf597 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt @@ -20,6 +20,7 @@ package mx.trackermap.TrackerMap.android.devices import android.view.LayoutInflater import android.view.ViewGroup import androidx.core.view.updateLayoutParams +import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import mx.trackermap.TrackerMap.android.R import mx.trackermap.TrackerMap.android.databinding.UnitItemBinding @@ -28,10 +29,18 @@ import mx.trackermap.TrackerMap.android.shared.UnitRenderData import mx.trackermap.TrackerMap.client.models.UnitInformation class DevicesAdapter( - private val units: List, + private val units: MutableList, private val actionCallback: ActionCallback? ) : RecyclerView.Adapter() { + fun setData(units: List) { + val diffCallback = DevicesDiffCallback(this.units, units) + val diffResult = DiffUtil.calculateDiff(diffCallback) + this.units.clear() + this.units.addAll(units) + diffResult.dispatchUpdatesTo(this) + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val binding = UnitItemBinding.inflate(LayoutInflater.from(parent.context), parent, false) -- cgit v1.2.3