diff options
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.kt | 46 |
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 |