// ĠView Binding Ġdelegate Ġfor ĠF rag ments Ċ // ĠUse Ġexample : Ġsome Fragment Bind ig Ġby Ġbind Fragment < Some Fragment Binding >( Some Fragment Binding :: bind ) Ċ Ċ class Ġbind Fragment < T Ġ: ĠView Binding >( ĊĠĠĠ Ġprivate Ġval Ġview Binder : Ġ( View ) Ġ-> ĠT Ċ ) Ġ: ĠReadOnly Property < Fragment , ĠT > Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġbinding : ĠT ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Lifecycle Observer Ġ= ĠBinding Lifecycle Observer () ĊĊĠĠĠ Ġoverride Ġoperator Ġfun ĠgetValue ( this Ref : ĠFragment , Ġproperty : ĠK Property < *> ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . binding ?. let Ġ{ Ġreturn Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfragment View Ġ= Ġthis Ref . require View () ĊĠĠĠĠĠĠĠ Ġthis Ref . view Lifecycle Owner . lifecycle . add Observer ( binding Lifecycle Observer ) ĊĠĠĠĠĠĠĠ Ġreturn Ġview Binder . invoke ( fragment View ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . binding Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠBinding Lifecycle Observer Ġ: ĠDefault Lifecycle Observer Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmain Handler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĊĠĠĠĠĠĠĠ Ġ@ MainThread ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Destroy ( owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġowner . lifecycle . remove Observer ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Handler . post Ġ{ Ġbinding Ġ= Ġnull Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ