package Ġcom . blue lay . dam da Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . net . Network Capabilities Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Search View Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . res . Resources Compat Ċ import Ġcom . google . gson . annotations . SerializedName Ċ import Ġkotlinx . android . synt hetic . main . activity _ search _ movie .* Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġretrofit 2 . http . GET Ċ import Ġretrofit 2 . http . Query Ċ Ċ class ĠMovie Search Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġmovie List Ġ= Ġarray ListOf < Movie >() ĊĠĠĠ Ġprivate Ġval Ġmovie Adapter Ġ= ĠMovie Search Adapter ( this , Ġmovie List ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ search _ movie ) ĊĊĠĠĠĠĠĠĠ Ġlv Search Movie . adapter Ġ= Ġmovie Adapter ĊĊĠĠĠĠĠĠĠ Ġval Ġid : ĠInt Ġ= Ġsv Movie . context . resources . getIdentifier ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" android : id / search _ src _ text ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġsearch Text : ĠTextView Ġ= Ġsv Movie . findViewById ( id ) ĊĠĠĠĠĠĠĠ Ġval Ġmy Custom Font Ġ= ĠResources Compat . getFont ( this , ĠR . font . nan ums qu arer ound b ) ĊĠĠĠĠĠĠĠ Ġsearch Text . type face Ġ= Ġmy Custom Font ĊĊĠĠĠĠĠĠĠ Ġsv Movie . setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( query Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Internet Connection ( this @ Movie Search Activity )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMov ies DB . get Search Movies ( getString ( R . string . api _ key ), 1 , Ġquery , Ġ:: on Search Movies F etched ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ Movie Search Activity , Ġ" ìĿ¸ íĦ° ëĦ · ìĹĲ ĠìĹ° ê²° ëĲĺìĸ´ ĠìŀĪ ìĸ´ ìķ¼ Ġê²Ģ ìĥī ìĿ´ Ġê°ĢëĬ¥ íķ©ëĭĪëĭ¤ .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġlv Search Movie . setOn ItemClickListener Ġ{ Ġparent , Ġview , Ġposition , Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Intent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Intent . putExtra (" title ", Ġmovie List [ position ]. title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Intent . putExtra (" image ", Ġmovie List [ position ]. poster _ path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( RESULT _ OK , Ġresult Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Search Movies F etched ( movies : ĠList < Movie >) Ġ{ ĊĠĠĠĠĠĠĠ Ġmovie List . clear () ĊĠĠĠĠĠĠĠ Ġmovie List . addAll ( movies ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( movie Ġin Ġmovie List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovie . poster _ path Ġ= Ġ" https :// image . t mdb . org / t / p / original ${ movie . poster _ path }" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmovie Adapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠGet Movies Response ( ĊĠĠĠĠĠĠĠ Ġ@ SerializedName (" page ") Ġval Ġpage : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ SerializedName (" results ") Ġval Ġmovies : ĠList < Movie >, ĊĠĠĠĠĠĠĠ Ġ@ SerializedName (" total _ pages ") Ġval Ġpages : ĠInt ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinterface ĠApi Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ GET (" search / movie ") ĊĠĠĠĠĠĠĠ Ġfun Ġget Search Movies ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Query (" api _ key ") Ġapi _ key : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Query (" page ") Ġpage : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Query (" language ") Ġlanguage : ĠString Ġ= Ġ" ko - KR ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Query (" query ") Ġquery : ĠString ĊĠĠĠĠĠĠĠ Ġ): ĠCall < Get Movies Response > ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠMov ies DB Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġapi : ĠApi ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl (" https :// api . the mov ied b . org / 3 /") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Ġ= Ġretrofit . create ( Api :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Search Movies ( api _ key Ġ: ĠString , Ġpage : ĠInt Ġ= Ġ 1 , Ġquery Ġ: ĠString , ĠonSuccess : Ġ( movies : ĠList < Movie >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi . get Search Movies ( api _ key Ġ= Ġapi _ key , Ġpage Ġ= Ġpage , Ġquery Ġ= Ġquery ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enqueue ( object Ġ: ĠCallback < Get Movies Response > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall : ĠCall < Get Movies Response >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResponse < Get Movies Response > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Body Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Body Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess . invoke ( response Body . movies ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Get Movies Response >, Ġt : ĠThrowable ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Internet Connection ( context Ġ: ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnectivity Manager Ġ= Ġcontext . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnw ĠĠĠĠĠ Ġ= Ġconnectivity Manager . active Network Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġact Nw Ġ= Ġconnectivity Manager . get Network Capabilities ( nw ) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact Nw . has Transport ( Network Capabilities . TRANSPORT _ WIFI ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact Nw . has Transport ( Network Capabilities . TRANSPORT _ CELL ULAR ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact Nw . has Transport ( Network Capabilities . TRANSPORT _ ETHER NET ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġconnectivity Manager . active Network Info ?. isConnected Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }