summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-06-23 23:38:34 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-07-01 19:12:29 +0000
commitc9dadc32a698c6058db887470e2a0cd2d050018f (patch)
treefddaa7acb837ffbb381450f5dc21bac25e2f1671
parentd7501dfd43e687dcaa7cb4f2c2984527191438d7 (diff)
downloadmullvadvpn-c9dadc32a698c6058db887470e2a0cd2d050018f.tar.xz
mullvadvpn-c9dadc32a698c6058db887470e2a0cd2d050018f.zip
Add callback for when header is available
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/util/AdapterWithHeader.kt12
1 files changed, 12 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/util/AdapterWithHeader.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/AdapterWithHeader.kt
index 0cddaaa123..379d58f758 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/util/AdapterWithHeader.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/AdapterWithHeader.kt
@@ -4,7 +4,9 @@ import android.support.v7.widget.RecyclerView.Adapter
import android.support.v7.widget.RecyclerView.AdapterDataObserver
import android.support.v7.widget.RecyclerView.ViewHolder
import android.view.LayoutInflater
+import android.view.View
import android.view.ViewGroup
+import kotlin.properties.Delegates.observable
class AdapterWithHeader<H : ViewHolder>(
val adapter: Adapter<H>,
@@ -56,6 +58,14 @@ class AdapterWithHeader<H : ViewHolder>(
}
}
+ private var headerView: View? by observable<View?>(null) { _, _, newView ->
+ newView?.let { view -> onHeaderAvailable?.invoke(view) }
+ }
+
+ var onHeaderAvailable by observable<((View) -> Unit)?>(null) { _, _, listener ->
+ headerView?.let { header -> listener?.invoke(header) }
+ }
+
init {
adapter.registerAdapterDataObserver(observer)
}
@@ -100,6 +110,8 @@ class AdapterWithHeader<H : ViewHolder>(
val inflater = LayoutInflater.from(parentView.context)
val view = inflater.inflate(headerLayoutId, parentView, false)
+ headerView = view
+
return HeaderOrHolder.Header(view)
} else {
val holder = adapter.onCreateViewHolder(parentView, viewType - 1)