我编写了一个简单的POJO(或POKO),并希望将其用于在Kotlin中编写的Android应用程序内的数据绑定。我的问题,没有调用setter中的代码。我希望在Console中看到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
并在设置器中调用registry.notifyChange(this, BR.helloWorldText)
。
答案 0 :(得分:0)
代码从不调用setter,只调用getter。
感谢您提供有助于解决问题的评论。此代码按预期运行:
fun main(args: Array<String>) {
var myData = MyData()
println(myData.helloWorldText)
myData.nextValuePlease()
println(myData.helloWorldText)
}
class MyData {
private val values = listOf<String>("Oh...", "Oh captain...", "Oh captain, my ...", "Oh captain, my captain...")
private var i = 0
fun nextValuePlease() {
i = ++i % values.size
helloWorldText = helloWorldText
}
var helloWorldText: String
get() = values[i]
set(value) {
println("Set value to \"" + value+"\"")
}
}