package Ġcom . bad oo . ri bs . core . view Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . Id Res Ċ import Ġcom . bad oo . ri bs . core . Node Ċ import Ġcom . bad oo . ri bs . core . plugin . Plugin Ċ Ċ abstract Ġclass ĠAndroid R ib View Ġ: ĠR ib View Ġ{ ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠView > ĠfindViewById (@ Id Res Ġid : ĠInt ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġandroid View . findViewById ( id ) ĊĊĠĠĠ Ġprotected Ġopen Ġfun ĠgetParent View For Child ( child : ĠNode < *> ): ĠViewGroup Ġ= ĊĠĠĠĠĠĠĠ Ġandroid View ĊĊĠĠĠ Ġoverride Ġfun Ġattach Child ( child : ĠNode <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= ĠgetParent View For Child ( child ) ĊĠĠĠĠĠĠĠ Ġchild . onCreate View ( this ) ĊĠĠĠĠĠĠĠ Ġchild . view ?. let Ġ{ Ġtarget . addView ( it . android View ) Ġ} ĊĠĠĠĠĠĠĠ Ġchild . on Attach To View () ĊĠĠĠĠĠĠĠ Ġchild . plugins < Android View Lifecycle Aware >(). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Attach To View ( target ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdetach Child ( child : ĠNode <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= ĠgetParent View For Child ( child ) ĊĠĠĠĠĠĠĠ Ġchild . view ?. let Ġ{ Ġtarget . remove View ( it . android View ) Ġ} ĊĠĠĠĠĠĠĠ Ġchild . on Detach From View () ĊĠĠĠĠĠĠĠ Ġchild . plugins < Android View Lifecycle Aware >(). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Detach From View ( target ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInstances Ġof Ġthis Ġplugin Ġwill Ġnot Ġbe Ġnotified Ġby ĠNode , Ġbut Ġby Ġ[ Android R ib View ] Ġdirectly , ĊĠĠĠĠ Ġ* Ġas Ġthe Ġexistence Ġof Ġa Ġparent ViewGroup Ġdepends Ġon Ġthis Ġview Ġtype Ġ( think ĠCompose ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġalso Ġmeans Ġthat Ġany Ġchild Ġimplementing Ġthis Ġinterface Ġcannot Ġbe Ġguaranteed Ġto Ġbe Ġnotified ĊĠĠĠĠ Ġ* Ġat Ġall , Ġonly Ġif Ġattached Ġto Ġa Ġparent Ġthat Ġhas Ġ[ Android R ib View ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠAndroid View Lifecycle Aware Ġ: ĠPlugin Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Attach To View ( parent ViewGroup : ĠViewGroup ) Ġ{} ĊĠĠĠĠĠĠĠ Ġfun Ġon Detach From View ( parent ViewGroup : ĠViewGroup ) Ġ{} ĊĠĠĠ Ġ} Ċ } Ċ