aboutsummaryrefslogtreecommitdiff
path: root/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt
diff options
context:
space:
mode:
Diffstat (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt')
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt46
1 files changed, 46 insertions, 0 deletions
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
new file mode 100644
index 0000000..72d61e3
--- /dev/null
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt
@@ -0,0 +1,46 @@
+package mx.trackermap.TrackerMap.android.devices
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import mx.trackermap.TrackerMap.android.databinding.UnitItemBinding
+import mx.trackermap.TrackerMap.client.models.UnitInformation
+
+class DevicesAdapter(private val units: List<UnitInformation>) :
+ RecyclerView.Adapter<DevicesAdapter.ViewHolder>() {
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ val binding = UnitItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+
+ return ViewHolder(binding)
+ }
+
+ override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+ holder.toggleOptions(false)
+
+ val unit = units[position]
+ holder.binding.apply {
+ unitName.text = unit.device.name
+ driverName.text = unit.device.contact
+ unitSpeed.text = "${unit.position?.speed ?: "--"} Km/h"
+ lastAddress.text = unit.position?.address ?: "Unknown location"
+ lastDate.text = "yyyy/mm/dd, hh:mm"
+ }
+ }
+
+ override fun getItemCount(): Int = units.size
+
+ inner class ViewHolder(val binding: UnitItemBinding) : RecyclerView.ViewHolder(binding.root) {
+ init {
+ binding.unitCard.setOnClickListener {
+ toggleOptions(binding.itemOptions.visibility == View.GONE)
+ }
+ }
+
+ fun toggleOptions(shouldShow: Boolean) {
+ binding.itemOptions.visibility = if (shouldShow) View.VISIBLE else View.GONE
+ binding.unitCard.cardElevation = if (shouldShow) 5.0F else 0.0F
+ }
+ }
+} \ No newline at end of file