したがって、Realm で挿入操作を実行し、RealChangeListener で挿入が完了したことを通知するインタラクターがあります。それは次のようなものです:
fun insertCar(item: Car) {
realm.doInTransaction {
val car = Car(...)
val copy = copyToRealm(car)
copy.addChangeListener(...)
}
}
私はこのようにすることができます:
fun insertCar(item: Car, listener: RealmChangeListener<Car>) {
realm.doInTransaction {
val car = Car(...)
val copy = copyToRealm(car)
copy.addChangeListener(listener)
}
}
そして、次のようにアクセスします。
realmInteractor.insertCar(item, RealmChangeListener {
// do something here
})
しかし、私はこのリスナーを削除する方法がありません
realmInteractor.insertCar(item, RealmChangeListener {
// do something here
it.removeChangeListener(this)
})
this
実際のリスナーではなく、その場所にあるクラスを指します
私もこれを行うことができます:
fun insertCar(item: Car, doAfterChange (Car) -> Unit) {
realm.doInTransaction {
val car = Car(...)
val copy = copyToRealm(car)
copy.addChangeListener(RealmChangeListener{
doAfterChange()
})
}
}
しかし、私は別のSAMの中にSAMを持っています(あまりにもやり過ぎです)
私はこのようにすることができます:
fun insertCar(item: Car, listener: RealmChangeListener<Car>) {
realm.doInTransaction {
val car = Car(...)
val copy = copyToRealm(car)
copy.addChangeListener(listener)
}
}
realmInteractor.insertCar(item, object : RealmChangeListener<Car> {
override fun onChange(element: Car?) {
...
element?.removeChangeListener(this)
}
})
これは機能しますが、冗長すぎます。
では、これにどのように対処し、何が最善のアプローチと考えられているのでしょうか?