【发布时间】:2017-07-11 12:06:01
【问题描述】:
我编写了一个简单的 POJO(或 POKO),并希望将其用于在 Kotlin 编写的 Android 应用程序中进行数据绑定。我的问题,setter 中的代码没有被调用。我希望在控制台中看到Set value to <>。知道为什么这没有发生吗?
这是我发在try.kotlinlang.org的代码:
fun main(args: Array<String>) {
var myData = MyData()
println(myData.helloWorldText)
println(myData.helloWorldText)
println(myData.helloWorldText)
println(myData.helloWorldText)
}
class MyData {
private val values = listOf<String>("Oh...", "Oh captain...", "Oh captain, my ...", "Oh captain, my captain...")
private var i = -1
var helloWorldText: String = ""
get() = values[++i % values.size]
set(value) {
println("Set value to " + field)
}
}
背景信息:稍后我想让我的 POJO 实现 android.databinding.Observable 并在 setter 中调用 registry.notifyChange(this, BR.helloWorldText)。
【问题讨论】:
-
你能发帖吗,你如何改变价值?
-
该值只能使用setter来改变。在我的应用程序中,每当调用 getter 时,该值都会隐式更改。到目前为止,这工作正常。值发生变化。
-
那么问题出在哪里?
-
setter里面的代码没有被执行。因此,对于数据绑定,我无法注册我的
Observable.OnPropertyChangedCallback。 This 解释了如何为 Java 设置 PropertyChangedCallback。 -
您更新的代码不应显示该字符串,因为没有分配。所以这个值永远不会被设置。
标签: android data-binding kotlin