From a1afb74e57127233696c20af0bed84a5867ab342 Mon Sep 17 00:00:00 2001
From: Christophe Deschamps <christophe.deschamps.work@gmail.com>
Date: Tue, 8 Dec 2020 10:38:58 +0100
Subject: [PATCH] Highlight selected value in dropdown widgets

---
 app/src/main/java/org/linhome/ui/widgets/LSpinner.kt     | 3 ++-
 .../main/java/org/linhome/ui/widgets/LSpinnerAdapter.kt  | 9 ++++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/app/src/main/java/org/linhome/ui/widgets/LSpinner.kt b/app/src/main/java/org/linhome/ui/widgets/LSpinner.kt
index 5d0d296..b7383bc 100644
--- a/app/src/main/java/org/linhome/ui/widgets/LSpinner.kt
+++ b/app/src/main/java/org/linhome/ui/widgets/LSpinner.kt
@@ -72,7 +72,7 @@ class LSpinner : LinearLayout {
 
     var items: ArrayList<SpinnerItem>? = null
         set(value) {
-            binding.root.spinner.adapter = value?.let { LSpinnerAdapter(it, binding.root.spinner, this) }
+            binding.root.spinner.adapter = value?.let { LSpinnerAdapter(it, binding.root.spinner, this, null) }
         }
 
 
@@ -93,6 +93,7 @@ class LSpinner : LinearLayout {
         set(value) {
             if (value != null) {
                 binding.root.spinner.setSelection(value)
+                (binding.root.spinner.adapter as LSpinnerAdapter).selectedIndex = value
             }
         }
 
diff --git a/app/src/main/java/org/linhome/ui/widgets/LSpinnerAdapter.kt b/app/src/main/java/org/linhome/ui/widgets/LSpinnerAdapter.kt
index f63acd6..c862963 100644
--- a/app/src/main/java/org/linhome/ui/widgets/LSpinnerAdapter.kt
+++ b/app/src/main/java/org/linhome/ui/widgets/LSpinnerAdapter.kt
@@ -41,7 +41,7 @@ import org.linhome.databinding.ItemSpinnerBinding
 import org.linhome.utils.cdlog
 
 class SpinnerItem(val textKey: String, val iconFile: String? = null, val backingKey: String? = null)
-class LSpinnerAdapter(private val options: ArrayList<SpinnerItem>, val spinner: Spinner, val lSpinner:LSpinner) :
+class LSpinnerAdapter(private val options: ArrayList<SpinnerItem>, val spinner: Spinner, val lSpinner:LSpinner, var selectedIndex: Int?) :
     SpinnerAdapter {
 
     var height: Int? = null
@@ -114,6 +114,13 @@ class LSpinnerAdapter(private val options: ArrayList<SpinnerItem>, val spinner:
             view.visibility = View.VISIBLE
         }
 
+        if (lSpinner.opened && position == selectedIndex) {
+            view.background = Theme.roundRectInputBackgroundWithColorKeyAndRadius(
+                "color_i",
+                "user_input_corner_radius"
+            )
+        }
+
         return view
     }
 
-- 
GitLab