From 233efdfb6aa45965ab0808aca0b823ade6f7b87f Mon Sep 17 00:00:00 2001 From: Isidro Henoch Date: Tue, 14 Dec 2021 19:01:28 -0600 Subject: Creates the RV adapter to display the units on screen --- .../TrackerMap/android/devices/DevicesAdapter.kt | 46 +++++++++++ .../TrackerMap/android/devices/DevicesFragment.kt | 8 ++ .../src/main/res/layout/devices_fragment.xml | 18 ++--- androidApp/src/main/res/layout/unit_item.xml | 94 ++++++++++++++++++++++ androidApp/src/main/res/layout/units_activity.xml | 3 +- androidApp/src/main/res/values/colors.xml | 2 + 6 files changed, 160 insertions(+), 11 deletions(-) create mode 100644 androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt create mode 100644 androidApp/src/main/res/layout/unit_item.xml (limited to 'androidApp/src/main') 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) : + RecyclerView.Adapter() { + + 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 diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesFragment.kt index 98c98cc..4ac5d48 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesFragment.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesFragment.kt @@ -6,6 +6,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.coroutines.DelicateCoroutinesApi import mx.trackermap.TrackerMap.android.databinding.DevicesFragmentBinding import mx.trackermap.TrackerMap.android.units.UnitsViewModel @@ -34,13 +35,20 @@ class DevicesFragment: Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + setupList() setupObservers() } + private fun setupList() { + binding.devicesList.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) + binding.devicesList.adapter = DevicesAdapter(emptyList()) + } + @DelicateCoroutinesApi private fun setupObservers() { unitsViewModel.units.observe(this) { units -> Log.d("DevicesFragment", "Success $units") + binding.devicesList.swapAdapter(DevicesAdapter(units), false) } } } \ No newline at end of file diff --git a/androidApp/src/main/res/layout/devices_fragment.xml b/androidApp/src/main/res/layout/devices_fragment.xml index 579afc2..fd91db3 100644 --- a/androidApp/src/main/res/layout/devices_fragment.xml +++ b/androidApp/src/main/res/layout/devices_fragment.xml @@ -1,17 +1,17 @@ + android:layout_height="match_parent"> - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> \ No newline at end of file diff --git a/androidApp/src/main/res/layout/unit_item.xml b/androidApp/src/main/res/layout/unit_item.xml new file mode 100644 index 0000000..4534339 --- /dev/null +++ b/androidApp/src/main/res/layout/unit_item.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/layout/units_activity.xml b/androidApp/src/main/res/layout/units_activity.xml index 750e00f..5bfb228 100644 --- a/androidApp/src/main/res/layout/units_activity.xml +++ b/androidApp/src/main/res/layout/units_activity.xml @@ -13,8 +13,7 @@ app:layout_constraintTop_toBottomOf="@id/displayModeToggle" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - android:background="@color/colorPrimary"/> + app:layout_constraintBottom_toBottomOf="parent"/> #656A74 #43474E #EB473E + #FDFDFD + #ECEFF3 \ No newline at end of file -- cgit v1.2.3