From e2107e9990187d7aec1f6244dab9e72855c8139e Mon Sep 17 00:00:00 2001 From: Denis Karmyshakov Date: Fri, 27 Apr 2018 14:02:29 +0300 Subject: [PATCH] Simple delegate for properties --- .../roboswag/components/extensions/Delegates.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/main/java/ru/touchin/roboswag/components/extensions/Delegates.kt diff --git a/src/main/java/ru/touchin/roboswag/components/extensions/Delegates.kt b/src/main/java/ru/touchin/roboswag/components/extensions/Delegates.kt new file mode 100644 index 0000000..c8e0538 --- /dev/null +++ b/src/main/java/ru/touchin/roboswag/components/extensions/Delegates.kt @@ -0,0 +1,16 @@ +package ru.touchin.roboswag.components.extensions + +import kotlin.properties.Delegates +import kotlin.properties.ObservableProperty +import kotlin.properties.ReadWriteProperty +import kotlin.reflect.KProperty + +/** + * Simple observable delegate only for notification of new value. + */ +inline fun Delegates.observable( + initialValue: T, + crossinline onChange: (newValue: T) -> Unit +): ReadWriteProperty = object : ObservableProperty(initialValue) { + override fun afterChange(property: KProperty<*>, oldValue: T, newValue: T) = onChange(newValue) +}