package Ġcom . github . sph en isc ine . k binding Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ Ċ /** Ċ Ġ* ĠThese Ġare Ġobservable Ġevents , Ġthat Ġwon 't Ġret rigger Ġif Ġan Ġactivity Ġres ub scri bes Ġto Ġthe Ġbind able Ċ Ġ* Ġ( e . g . Ġon Ġrotation ). ĠIn Ġthis Ġthey Ġare Ġsimilar Ġto Ġa ĠSingle Live Event Ġas Ġdescribed Ġon Ġseveral Ġwebsites . Ċ Ġ* Ċ Ġ* ĠNote Ġhowever Ġthat Ġif Ġthere Ġis Ġmore Ġthan Ġone Ġobserver Ġob serving Ġat Ġa Ġtime , Ċ Ġ* Ġonly Ġone Ġwill Ġbe Ġnotified . ĠI 've Ġtried Ġa Ġlot Ġof Ġthings Ġbut Ġstill Ġcould Ġnot Ġget Ġaround Ċ Ġ* Ġthis Ġlimitation Ġwithout Ġpossibly Ġintro ducing Ġother Ġproblems Ġ- Ġif Ġonly ĠLive Data Ġhad Ġsome Ġway Ċ Ġ* Ġto Ġquery Ġthe Ġnumber Ġof Ġob servers Ċ Ġ*/ Ċ Ċ interface ĠK Bind able Event < B : ĠAny , ĠF : ĠFunction < Unit >> Ġ: ĠK Bind able < B , ĠF > Ċ Ċ abstract Ġclass ĠAbstract K Bind able Event < B : ĠAny , ĠF : ĠFunction < Unit >> Ġ: ĠK Bind able Event < B , ĠF >, ĠAbstract K Bind able < B , ĠF >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġlive Data Ġ= ĠMutable LiveData < B ?> () Ċ } Ċ Ċ open Ġclass ĠK Bind able Event 0 Ġ: ĊĠĠĠ ĠAbstract K Bind able Event < Unit , Ġ() Ġ-> ĠUnit >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġlive Data Ġ= ĠMutable LiveData < Unit ?> () ĊĊĠĠĠ Ġopen Ġoperator Ġfun Ġinvoke () Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data . value Ġ= ĠUnit ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmake Observer ( func : Ġ() Ġ-> ĠUnit ): ĠObserver < Any ?> Ġ= ĠObserver Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunc () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ open Ġclass ĠK Bind able Event 1 < T > Ġ: ĊĠĠĠ ĠAbstract K Bind able Event < Box < T >, Ġ( T ) Ġ-> ĠUnit >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġlive Data Ġ= ĠMutable LiveData < Box < T > ?> () ĊĊĠĠĠ Ġopen Ġoperator Ġfun Ġinvoke ( arg : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data . value Ġ= ĠBox ( arg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmake Observer ( func : Ġ( T ) Ġ-> ĠUnit ): ĠObserver < Any ?> Ġ= ĠObserver Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunc ( it . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ open Ġclass ĠK Bind able Event 2 < A , ĠB > Ġ: ĊĠĠĠ ĠAbstract K Bind able Event < Pair < A , ĠB >, Ġ( A , ĠB ) Ġ-> ĠUnit >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġlive Data Ġ= ĠMutable LiveData < Pair < A , ĠB > ?> () ĊĊĠĠĠ Ġopen Ġoperator Ġfun Ġinvoke ( a : ĠA , Ġb : ĠB ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data . value Ġ= ĠPair ( a , Ġb ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmake Observer ( func : Ġ( A , ĠB ) Ġ-> ĠUnit ): ĠObserver < Any ?> Ġ= ĠObserver Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunc ( it . first , Ġit . second ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ open Ġclass ĠK Bind able Event 3 < A , ĠB , ĠC > Ġ: ĊĠĠĠ ĠAbstract K Bind able Event < Triple < A , ĠB , ĠC >, Ġ( A , ĠB , ĠC ) Ġ-> ĠUnit >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġlive Data Ġ= ĠMutable LiveData < Triple < A , ĠB , ĠC > ?> () ĊĊĠĠĠ Ġopen Ġoperator Ġfun Ġinvoke ( a : ĠA , Ġb : ĠB , Ġc : ĠC ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data . value Ġ= ĠTrip le ( a , Ġb , Ġc ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmake Observer ( func : Ġ( A , ĠB , ĠC ) Ġ-> ĠUnit ): ĠObserver < Any ?> Ġ= ĠObserver Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunc ( it . first , Ġit . second , Ġit . third ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }