package Ġcom . github . kit tin un f . reactive android . widget Ċ Ċ import Ġandroid . database . DataSet Observer Ċ import Ġandroid . widget . Adapter Ċ import Ġcom . github . kit tin un f . reactive android . Extension Field Delegate Ċ import Ġcom . github . kit tin un f . reactive android . subscription . Android MainThread Subscription Ċ import Ġio . reactivex . Observable Ċ Ċ //================================================================ ================ Ċ // ĠEvents Ċ //================================================================ ================ Ċ Ċ fun ĠAdapter . rx _ changed (): ĠObservable < Unit > Ġ{ ĊĠĠĠ Ġreturn ĠObservable . create Ġ{ Ġsubscriber Ġ-> ĊĠĠĠĠĠĠĠ Ġ_ data Set . on Changed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubscriber . onNext ( Unit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġunregister Subscription Ġ= ĠAndroid MainThread Subscription Ġ{ Ġunregister DataSet Observer (_ data Set ) Ġ} ĊĠĠĠĠĠĠĠ Ġsubscriber . set Disposable ( unregister Subscription ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠAdapter . rx _ invalid ated (): ĠObservable < Unit > Ġ{ ĊĠĠĠ Ġreturn ĠObservable . create Ġ{ Ġsubscriber Ġ-> ĊĠĠĠĠĠĠĠ Ġ_ data Set . on Invalid ated Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubscriber . onNext ( Unit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsubscriber . set Disposable ( Android MainThread Subscription Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunregister DataSet Observer (_ data Set ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠAdapter ._ data Set : Ġ_ Adapter _ DataSet Observer ĊĠĠĠĠĠĠĠ Ġby ĠExtension Field Delegate ({ Ġ_ Adapter _ DataSet Observer () Ġ}, Ġ{ Ġregister DataSet Observer ( it ) Ġ}) Ċ Ċ private Ġclass Ġ_ Adapter _ DataSet Observer Ġ: ĠDataSet Observer () Ġ{ ĊĊĠĠĠ Ġvar ĠonChanged : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġon Invalid ated : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġfun ĠonChanged ( listener : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠonChanged Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonChanged () Ġ{ ĊĠĠĠĠĠĠĠ ĠonChanged ?. invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Invalid ated ( listener : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Invalid ated Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Invalid ated () Ġ{ ĊĠĠĠĠĠĠĠ Ġon Invalid ated ?. invoke () ĊĠĠĠ Ġ} Ċ Ċ } Ċ