package Ġcom . cal d rem ch . common . base Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . view binding . View Binding Ċ import Ġby . kir ich 1 4 0 9 . view binding delegate . View Binding Property Ċ import Ġby . kir ich 1 4 0 9 . view binding delegate . internal . empty Vb Callback Ċ import Ġby . kir ich 1 4 0 9 . view binding delegate . view Binding Ċ import Ġcom . cal d rem ch . common . base . View Binding Delegate . i View Binding Ċ import Ġkotlin . properties . ReadOnly Property Ċ import Ġkotlin . reflect . K Property Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ author ĠCal d rem ch Ċ Ġ* Ċ Ġ* Ġ@ date Ġ 2 0 2 2 / 1 / 1 6 Ċ Ġ* Ċ Ġ* Ġ@ email Ġcal d rem ch @ 1 6 3 . com Ċ Ġ* Ċ Ġ* Ġ@ describe Ċ Ġ* Ċ Ġ**/ Ċ Ċ interface ĠView Binding Provider < F Ġ: ĠFragment , ĠT Ġ: ĠView Binding > Ġ{ ĊĠĠĠ Ġpublic Ġfun Ġ< F Ġ: ĠFragment , ĠT Ġ: ĠView Binding > ĠFragment . view Binding ( ĊĠĠĠĠĠĠĠ Ġvb Factory : Ġ( View ) Ġ-> ĠT , ĊĠĠĠĠĠĠĠ Ġview Provider : Ġ( F ) Ġ-> ĠView Ġ= ĠFragment :: require View , ĊĠĠĠĠĠĠĠ Ġon View Destroyed : Ġ( T ) Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġ) Ċ } ĊĊ Ċ object ĠView Binding Delegate Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġi View Binding : ĠI View Binding Ċ } Ċ Ċ interface ĠI View Binding Ġ{ ĊĠĠĠ Ġfun Ġ< F , ĠT > ĠgetValue ( ĊĠĠĠĠĠĠĠ Ġvb Factory : Ġ( View ) Ġ-> ĠT , ĊĠĠĠĠĠĠĠ Ġview Provider : Ġ( F ) Ġ-> ĠView ĊĠĠĠ Ġ): ĠReadOnly Property < F , ĠT > Ċ } ĊĊ Ċ //@ Jvm Name (" view Binding Fragment ") Ċ // public Ġinline Ġfun Ġ< F Ġ: ĠBase Fragment <* >, ĠT Ġ: ĠView Binding > ĠFragment . view Binding Fixed ( Ċ // ĠĠĠ Ġno inline Ġvb Factory : Ġ( View ) Ġ-> ĠT , Ċ // ĠĠĠ Ġno inline Ġview Provider : Ġ( F ) Ġ-> ĠView Ġ= ĠBase Fragment <* >:: root Xml , Ċ // ): ĠReadOnly Property < F , ĠT > Ġ{ Ċ // ĠĠĠ Ġreturn Ġi View Binding . getValue ( vb Factory , Ġview Provider ) Ċ //} ĊĊ Ċ @ Jvm Name (" view Binding Fragment ") Ċ public Ġinline Ġfun Ġ< F Ġ: ĠBase Fragment <* >, ĠT Ġ: ĠView Binding > ĠFragment . view Binding Fixed ( ĊĠĠĠ Ġno inline Ġvb Factory : Ġ( View ) Ġ-> ĠT , ĊĠĠĠ Ġno inline Ġview Provider : Ġ( F ) Ġ-> ĠView Ġ= ĠBase Fragment <* >:: root Xml , Ċ ): ĠReadOnly Property < F , ĠT > Ġ{ ĊĠĠĠ Ġreturn Ġview Binding ( vb Factory , Ġview Provider , Ġempty Vb Callback ()) Ċ }