Tag: 可观察

可循环观察的代表

在某些情况下是否有可能规避可观察的代表? 用例: val ls: ArrayList by Delegates.observable(arrayListOf()) { _, _, new -> if (someCondition) { usesList(new) // I want to reset ls to arrayListOf(), but without the invocation of the observable delegate. } }

kotlin中可重复的值types

我试图从api中恢复电动滑板车的值,但api返回可观察types,我不明白为什么值得重复的值应该重复。 当应用程序从另一个字段中恢复一个值时,他们订阅其余的也会改变。 主要活动 private lateinit var api: MijiaBluetoothApi val POS_BATTERY: Int = 0x22 val COUNT_BATTERY: Int = 1 val POS_SERIAL: Int = 0x10 val COUNT_SERIAL: Int = 7 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) var bateryText: TextView = findViewById(R.id.bateryText) as TextView var mileageText: TextView = findViewById(R.id.mileageText) as TextView var serialText: TextView = findViewById(R.id.serialText) as […]

kotlin接口能缓存一个值吗?

我真的很喜欢在Kotlin中使用接口的默认实现,尤其是像Observable这样的常见模式。 这是我的界面, interface Observable{ // How do I cache this? val observers: MutableList<Observer> get() = LinkedList() fun addObserver(o:Observer){ observers.add(o) } fun removeObserver(o:Observer){ observers.remove(o) } fun notifyObservers(u:T){ for (o in observers){ o.update(u) } } } 接口引用一个observers列表,但get()调用每次都返回一个新的LinkedList() 。 我如何缓存observers的价值,使它只创建一次? 我尝试过使用kotlin-lazy ,但是无法获得正确的语法,或者它不适用于接口。 我的IDE抱怨“委托属性不允许在接口。” UPDATE 基于Yoav的回答,我已经改变了我的界面 interface Observable{ val observers: MutableList<Observer> } 然后在实施课上, class MyObservable : Observable private val […]