【发布时间】:2017-06-30 11:03:39
【问题描述】:
如果您知道 Google 的实验性 Android 架构组件,您可能知道MutableLiveData。试图让它更有趣地使用我自带的:
class KotlinLiveData<T>(val default: T) {
val data = MutableLiveData<T>()
operator fun getValue(thisRef: Any?, property: KProperty<*>):T {
return data.value ?: default
}
operator fun setValue(thisRef: Any?, property: KProperty<*>, value:T) {
if (Looper.myLooper() == Looper.getMainLooper()) {
data.value = value
} else {
data.postValue(value)
}
}
}
然后我可以:
var name : String by KotlinLiveData("not given")
name = "Chrzęszczybrzęczykiewicz"
但是,唉 - 这使得 data 需要注册 Observer 无法访问:
name.data.observe(this, nameObserver) // won't work :(
知道我能不能得到它吗?
【问题讨论】:
-
考虑将您的解决方案作为答案发布,而不是作为问题的更新。这将有助于未来的读者并避免混淆。谢谢。
标签: delegates kotlin android-lifecycle android-databinding