package Ġcom . mir u ken . mvc . android Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġcom . mir u ken . Type Reference Ċ import Ġcom . mir u ken . callback . Handling Ċ import Ġcom . mir u ken . callback . not Handled Ċ import Ġcom . mir u ken . callback . require Composer Ċ import Ġcom . mir u ken . mvc . android . databinding . Data Binding Con ventions Ċ import Ġcom . mir u ken . mvc . view . View ing Ċ import Ġcom . mir u ken . mvc . view . View ing Layer Ċ import Ġcom . mir u ken . mvc . view . View ing Region Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . K Type Ċ import Ġkotlin . reflect . full . is Subclass Of Ċ Ċ abstract Ġclass ĠView Container Ġ: ĊĠĠĠĠĠĠĠ ĠConstraint Layout , ĠView ing Region , ĠView ing , ĠKeyboard Ġ{ ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext ? ĊĠĠĠ Ġ) Ġ: Ġsuper ( context ) ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs : ĠĠ ĠAttributeSet ? ĊĠĠĠ Ġ) Ġ: Ġsuper ( context , Ġattrs ) ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠĠĠĠĠ ĠContext ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs : ĠĠĠĠĠĠĠ ĠAttributeSet ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdef Style Attr : ĠInt ĊĠĠĠ Ġ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) ĊĊĠĠĠ Ġoverride Ġvar ĠviewModel : ĠAny ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay ( region : ĠView ing Region ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregion . show ( this ) ĊĊĠĠĠ Ġoverride Ġfun Ġview ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Key : ĠAny , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠĠĠ Ġ( View ing . () Ġ-> ĠUnit )? ĊĠĠĠ Ġ) = Ġ( when Ġ( view Key ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠK Class < *> Ġ-> Ġcreate View ( view Key ) ĊĠĠĠĠĠĠĠ Ġis ĠK Type Ġ-> Ġ( view Key . classifier Ġas ? ĠK Class <* >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let (:: create View ) ĊĠĠĠĠĠĠĠ Ġis ĠType Reference Ġ-> Ġ( view Key . type Ġas ? ĠClass <* >) ?. kotlin ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let (:: create View ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} Ġ?: Ġnot Handled ()). also Ġ{ Ġinit ?. invoke ( it ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow ( view : ĠView ing ): ĠView ing Layer Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcomposer Ġ= Ġrequire Composer () ĊĠĠĠĠĠĠĠ Ġreturn ĠAndroid Threading . run On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow ( view , Ġcomposer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġshow ( view : ĠView ing , Ġcomposer : ĠHandling ): ĠView ing Layer ĊĊĠĠĠ Ġoverride Ġfun Ġpresent Keyboard ( focus : ĠView ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAndroid Threading . run On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( focus Ġ?: Ġthis ). show Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdismiss Keyboard () Ġ= ĠAndroid Threading . run On MainThread Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate View ( view Class : ĠK Class < *> ): ĠView ing ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! view Class . is Subclass Of ( View ing :: class ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Class . java . is Interface Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Class . is Abstract ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġview Class . construct ors . first OrNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . parameters . size Ġ== Ġ 1 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . parameters [ 0 ]. type . classifier Ġ== ĠContext :: class ĊĠĠĠĠĠĠĠ Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAndroid Threading . run On MainThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . call ( context ) Ġas ĠView ing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }