package Ġcom . example . des af io f oton Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Search Manager Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Search View Ċ import Ġandroidx . recyclerview . widget . Default Item Animator Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġcom . example . des af io f oton . adapters . Movie Adapter Ċ import Ġcom . example . des af io f oton . databinding . Activity Main Binding Ċ import Ġcom . example . des af io f oton . di . component . D agger I Home Component Ċ import Ġcom . example . des af io f oton . di . module . Home Module Ċ import Ġcom . example . des af io f oton . models . Movie Ċ import Ġcom . example . des af io f oton . presenter . contract . I Home Contract Ċ import Ġcom . example . des af io f oton . utils . Dialog Utils Ċ import Ġjavax . inject . Inject Ċ Ċ @ Suppress Lint (" Non Constant ResourceId ") Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠI Home Contract . I Home View Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠI Home Contract . I Home Presenter ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding Ġ: ĠActivity Main Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cycler Adapter : ĠMovie Adapter ĊĊĠĠĠ Ġprivate Ġval Ġmovie List Ġ= ĠArrayList < Movie ?> () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ ĠD agger I Home Component . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. home Module ( Home Module ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inject ( this ) ĊĊĠĠĠĠĠĠĠ Ġbinding . load More . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġinit RecyclerView () ĊĊĠĠĠĠĠĠĠ Ġbinding . search View . setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent Ġ= ĠIntent ( application Context , ĠSearch able Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= ĠIntent . ACTION _ SEARCH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Search Manager . QUERY , Ġquery ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġload More () ĊĊĠĠĠĠĠĠĠ Ġbinding . load More . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload More () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSets Ġgrid Ġlayout ĊĠĠĠĠĠĠĠ Ġbinding . movie Rv . layout Manager Ġ= ĠGrid LayoutManager ( this , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġbinding . movie Rv . set Has Fixed Size ( true ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġprovides Ġbasic Ġanimations Ġon Ġremove , Ġadd , Ġand Ġmove Ġevents ĊĠĠĠĠĠĠĠ Ġbinding . movie Rv . item Animator Ġ= ĠDefault Item Animator () ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġre cycler Adapter Ġ= ĠMovie Adapter ( movie List ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġnow Ġadding Ġthe Ġadapter Ġto Ġre cycler view ĊĠĠĠĠĠĠĠ Ġbinding . movie Rv . adapter Ġ= Ġre cycler Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload More () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . load More . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġpresenter . get Pop ular () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpre ench er Lista () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . progressbar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġbinding . load More . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġbinding . load More . isEnabled Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġbinding . movie Rv . adapter ?. notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Su cess ( movies : ĠList < Movie > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmovies ?. let Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovie List . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpre ench er Lista () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonError () Ġ{ ĊĠĠĠĠĠĠĠ ĠDialog Utils . alert Message ( this , Ġ" O corre u Ġum Ġproblema Ġao Ġrecuper ar Ġa Ġlista Ġde Ġfil mes . ĠT ente Ġnov amente Ġmais Ġtar de .") ĊĠĠĠ Ġ} Ċ Ċ }