package Ġbr . org . ces ar . k not . ke ger ator . presentation . ke g Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ Ċ import Ġbr . org . ces ar . k not . ke ger ator . R Ċ import Ġbr . org . ces ar . k not . ke ger ator . injection . Injection Ċ import Ġbr . org . ces ar . k not . ke ger ator . presentation . extensions . get ViewModel Ċ import Ġbr . org . ces ar . k not . ke ger ator . presentation . model . K eg Model Ċ import Ġkotlinx . android . synt hetic . main . fragment _ ke gs .* Ċ import Ġjava . util .* Ċ Ċ class ĠK eg s Fragment Ġ: ĠFragment (), ĠK eg s Contract . View Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠK eg s Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm K eg s ViewModel Ġby Ġlazy Ġ{ Ġget ViewModel < K eg s ViewModel >() Ġ} ĊĠĠĠ Ġprivate Ġvar Ġm Listener : ĠOn K eg Selected Listener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm K eg s Adapter : ĠK eg s Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm K eg s Presenter : ĠK eg s Contract . Presenter ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġis ĠOn K eg Selected Listener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( context !!. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" Ġmust Ġimplement ĠOn K eg Selected Listener ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater ?, Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater !!. inflate ( R . layout . fragment _ ke gs , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView ?, ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġm K eg s Adapter Ġ= ĠK eg s Adapter () ĊĊĠĠĠĠĠĠĠ Ġm K eg s Adapter . click Event . subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener ?. on K eg Selected ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġre cycler _ ke gs . layout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġre cycler _ ke gs . adapter Ġ= Ġm K eg s Adapter ĊĊĠĠĠĠĠĠĠ Ġset Presenter ( Injection . provide K eg s Presenter ( m K eg s ViewModel )) ĊĊĠĠĠĠĠĠĠ Ġm K eg s ViewModel . ke gs . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm K eg s Adapter . ke gs Ġ= Ġit Ġ?: ĠCollections . emptyList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm K eg s Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġm K eg s ViewModel . recycler Visibility . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler _ ke gs . visibility Ġ= Ġit Ġ?: ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġm K eg s ViewModel . progress Visibility . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress . visibility Ġ= Ġit Ġ?: ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġm K eg s Presenter . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠĠĠĠĠ Ġm Listener Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Presenter ( presenter : ĠK eg s Contract . Presenter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm K eg s Presenter Ġ= Ġpresenter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn K eg Selected Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon K eg Selected ( ke g Model : ĠK eg Model ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ