package Ġcom . example . serie tracking . Fragments Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view .* Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . Search View Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . example . serie tracking . Adapters . Explore Recycler Adapter Ċ import Ġcom . example . serie tracking . Adapters . Tv Show Listener Ċ import Ġcom . example . serie tracking . TV Model Ċ import Ġcom . example . serie tracking . TV Show Ċ import Ġcom . example . serie tracking . account . Account Service Ċ import Ġcom . example . serie tracking . network . AddTo Favorite Response Ċ import Ġcom . example . serie tracking . network . ApiClient Ċ import Ġcom . example . serie tracking . network . Error Logging Callback Ċ import Ġcom . example . serie tracking . network . Http Constants Ċ import Ġkotlinx . android . synt hetic . main . fragment _ explore _ tv shows .* Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Response Ċ import Ġkotlin . math . exp Ċ Ċ // Ġthe Ġfragment Ġinitialization Ġparameters , Ġe . g . ĠARG _ ITEM _ NUMBER Ċ class ĠExplo re TV Shows Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlinear LayoutManager : ĠLinearLayoutManager ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠExplo re Recycler Adapter ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġexplore TV Shows : ĠTV Model ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfavor ites T vs : ĠTV Model ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtv Series Search View : ĠSearch View ĊĊĠĠĠ Ġprivate Ġvar Ġpage : ĠLong Ġ= Ġ 1 ĊĊĠĠĠ Ġprivate Ġvar Ġis Searching Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġtext To Search Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( com . example . serie tracking . R . layout . fragment _ explore _ tv shows , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġarguments !! ĊĠĠĠĠĠĠĠ Ġexplore TV Shows Ġ= Ġargs . get Serializable (" explore T vs ") Ġas ĠTV Model ĊĠĠĠĠĠĠĠ Ġfavor ites T vs Ġ= Ġargs . get Serializable (" favorites T vs ") Ġas ĠTV Model ĊĠĠĠĠĠĠĠ Ġtv Series Search View Ġ= Ġsearch View ĊĊĠĠĠĠĠĠĠ Ġset Adapter () ĊĊĠĠĠĠĠĠĠ Ġsearch View . setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( s : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmake Ġa Ġserver Ġcall ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( s : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfirst Search Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Searching Ġ|| Ġs Ġ!= Ġtext To Search ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Searching Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Search Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimm Ġ= Ġactivity !!. getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimm . hide Soft Input From Window ( view !!. getWindow Token (), Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext To Search Ġ= Ġs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Search Service ( text To Search , Ġfirst Search ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠExplo re Recycler Adapter ( explore TV Shows . results , Ġfavor ites T vs . results Ġ, object Ġ: ĠT v Show Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tv Show Selected ( tv Show : ĠTV Show , ĠisIn Favorite : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcallback Ġ= Ġobject : ĠError Logging Callback < AddTo Favorite Response >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < AddTo Favorite Response >, Ġresponse : ĠResponse < AddTo Favorite Response >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isIn Favorite ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavor ites T vs . results . remove ( tv Show ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavor ites T vs . results . add ( tv Show ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. run On Ui Thread Ġ{ Ġadapter . notify DataSet Changed () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAccount Service . addTo Favorite (" tv ", Ġtv Show . id , Ġ! isIn Favorite , Ġcallback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget More Pages () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmore Tv Shows () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tv Show User Selected ( tv Show : ĠTV Show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( getActivity (), ĠDetails Tv Show Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" tv Show ", Ġtv Show ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetActivity () !!. startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġexplore RecyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġlinear LayoutManager Ġ= ĠLinearLayoutManager ( activity !! ) ĊĠĠĠĠĠĠĠ Ġif Ġ( page Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear LayoutManager . scrollTo Position ((( page . toInt () Ġ- Ġ 1 ) Ġ* Ġ 2 0 ) Ġ- Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġexplore RecyclerView . layout Manager Ġ= Ġlinear LayoutManager ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġget Search Service ( text To Search : ĠString , Ġfirst Search : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcallback Search Ġ= Ġobject : ĠError Logging Callback < TV Model >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < TV Model > ?, Ġresponse : ĠResponse < TV Model > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response !!. is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first Search ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexplore TV Shows Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexplore TV Shows . results . addAll ( response . body (). results ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠApi Client . api Interface . search Tv Shows ( Http Constants . API _ KEY , Ġtext To Search , Ġpage ). enqueue ( callback Search ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmore Tv Shows (){ ĊĠĠĠĠĠĠĠ Ġif Ġ( page . toInt () Ġ== Ġexplore TV Shows . total Pages ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ// L le go Ġa Ġla Ġult ima ĠpÃ¡gina ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpage Ġ= Ġpage Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( is Searching ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Search Service ( text To Search , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcallback TV Ġ= Ġobject Ġ: ĠError Logging Callback < TV Model >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < TV Model > ?, Ġresponse : ĠResponse < TV Model > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response !!. is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmore Tv Shows Ġ= Ġresponse . body (). results ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexplore TV Shows . results . addAll ( more Tv Shows ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApi Client . api Interface . get Pop ular ( Http Constants . API _ KEY , Ġpage Ġ= Ġpage ). enqueue ( callback TV ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } ĊĊĊ