package Ġcom . why wh om . soft . why radio box . ui . search Ċ Ċ import Ġandroid . app . Search Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view .* Ċ import Ġandroidx . appcompat . app . ActionBar Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Search View Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . why wh om . soft . why radio box . R Ċ import Ġcom . why wh om . soft . why radio box . adapter . Pod cast ListAdapter Ċ import Ġcom . why wh om . soft . why radio box . event . Fragment Event Ċ import Ġcom . why wh om . soft . why radio box . extensions . set Listener Ċ import Ġcom . why wh om . soft . why radio box . interfaces . Recycler Listener Ċ import Ġcom . why wh om . soft . why radio box . model . Pod cast SearchResult Ċ import Ġcom . why wh om . soft . why radio box . ui . Base Fragment Ċ import Ġcom . why wh om . soft . why radio box . utils . Keyboard Utils Ċ import Ġkotlinx . android . synt hetic . main . fragment _ discovery _ feed .* Ċ import Ġorg . green robot . event bus . EventBus ĊĊ Ċ class ĠOnline Search Fragment Ġ: ĠBase Fragment (), ĠPod cast ListAdapter . Item Click List enter Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġm Search View : ĠSearch View ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġpod cast List : ArrayList < Pod cast SearchResult > Ġ= ĠArrayList < Pod cast SearchResult >() ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġquery Str : ĠString ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( query : ĠString ): Fragment { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Str Ġ= Ġquery ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOnline Search Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠOnline Search ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . online _ search _ fragment , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true )// æĥ³ è®© Fragment ä¸ŃçļĦ onCreate Options Menu çĶŁ æķĪ å¿ħé¡» åħĪ è°ĥçĶ¨ set Has Options Menu æĸ¹æ³ķ ï¼Į åĲ¦åĪĻ Toolbar æ²¡æľī èıľåįķ ãĢĤ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( this ). get ( Online Search ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġinit Toolbar () ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠPod cast ListAdapter ( podcast List , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġadapter . setOn Item Click ( this ) ĊĠĠĠĠĠĠĠ Ġpod cast _ list . layout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġpod cast _ list . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġpod cast _ list . set Listener ( object Ġ: ĠRe cycler Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġload More () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrefresh () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( query Str . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . set Refresh ing ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Query Changed ( query Str ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . podcast List LiveData . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpod cast List Ġ= Ġit Ġas ĠArrayList < Pod cast SearchResult > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( podcast List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . set Refresh ing ( false ); ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġget Action bar () Ġ: ĠAction Bar ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( activity Ġas ĠAppCompatActivity ). support ActionBar ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġinit Toolbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Action bar ()?. title Ġ= Ġ"" Ċ // ĠĠĠĠĠĠĠ Ġtoolbar . navigation Icon Ġ= Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġget Resources (). get Drawable ( R . drawable . ic _ baseline _ arrow _ back _ 2 4 , Ġnull ) Ċ // ĠĠĠĠĠĠĠ Ġtoolbar . set Navigation OnClickListener Ġ{ Ġactivity ?. on Back Pressed () Ġ} Ċ // ĠĠĠĠĠĠĠ Ġtoolbar . inflate Menu ( R . menu . menu _ search ); ĊĠĠĠĠĠĠĠ Ġget Action bar ()?. set Display Home As Up Enabled ( true )// æĺ¾ç¤º è¿ĶåĽŀ åĽ¾ æłĩ ĊĠĠĠĠĠĠĠ Ġget Action bar ()?. set Home Button Enabled ( true );// ä¸»éĶ® æĮīéĴ® èĥ½ åĲ¦ åı¯ çĤ¹åĩ» Ċ // ĠĠĠĠĠĠĠ Ġsetup Search ( toolbar . menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ search , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġsetup Search ( menu ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Search ( menu : ĠMenu ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch Item Ġ= Ġmenu . find Item ( R . id . search _ view ) ĊĠĠĠĠĠĠĠ Ġ// éĢļè¿ĩ MenuItem å¾ĹåĪ° Search View ĊĠĠĠĠĠĠĠ Ġm Search View Ġ= Ġsearch Item . action View Ġas ĠSearch View ĊĠĠĠĠĠĠĠ Ġval Ġsearch Manager Ġ= Ġcontext !!. getSystem Service ( Context . SEARCH _ SERVICE ) Ġas ĠSearch Manager ĊĠĠĠĠĠĠĠ Ġm Search View !!. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Search able Info ( search Manager . get Search able Info ( this @ Online Search Fragment . activity !!. component Name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Submit Button Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Hint Ġ= ĠgetString ( R . string . search ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æıĲäº¤ æĮīéĴ® çļĦ çĤ¹åĩ» äºĭä»¶ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġquery , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Online Search Fragment ", Ġ" åĨħå®¹ : Ġ$ query ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Str Ġ= Ġquery ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Query Changed ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Utils . hide Keyboard ( this @ Online Search Fragment . activity !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Online Search Fragment ", Ġ" åĨħå®¹ : Ġ$ new Text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® æĲľç´¢ æ¡Ĩ çĽ´æİ¥ å±ķ å¼Ģ æĺ¾ç¤º ãĢĤ å·¦ ä¾§ æľī æĶ¾ å¤§ éķľ ( åľ¨ æĲľç´¢ æ¡Ĩ ä¸Ń ) Ġ åı³ ä¾§ æľī åıī åıī Ġåı¯ä»¥ åħ³éĹŃ æĲľç´¢ æ¡Ĩ ĊĠĠĠĠĠĠĠ Ġm Search View !!. setIcon ified ( false ); ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® æĲľç´¢ æ¡Ĩ çĽ´æİ¥ å±ķ å¼Ģ æĺ¾ç¤º ãĢĤ å·¦ ä¾§ æľī æĶ¾ å¤§ éķľ ( åľ¨ æĲľç´¢ æ¡Ĩ å¤ĸ ) Ġ åı³ ä¾§ æĹł åıī åıī Ġæľī è¾ĵåħ¥ åĨħå®¹ åĲİ æľī åıī åıī Ġ ä¸įèĥ½ åħ³éĹŃ æĲľç´¢ æ¡Ĩ ĊĠĠĠĠĠĠĠ Ġm Search View !!. setIcon ified ByDefault ( false ); ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® æĲľç´¢ æ¡Ĩ çĽ´æİ¥ å±ķ å¼Ģ æĺ¾ç¤º ãĢĤ å·¦ ä¾§ æľī æĹł æĶ¾ å¤§ éķľ ( åľ¨ æĲľç´¢ æ¡Ĩ ä¸Ń ) Ġ åı³ ä¾§ æĹł åıī åıī Ġæľī è¾ĵåħ¥ åĨħå®¹ åĲİ æľī åıī åıī Ġ ä¸įèĥ½ åħ³éĹŃ æĲľç´¢ æ¡Ĩ ĊĠĠĠĠĠĠĠ Ġm Search View !!. on Action View Expanded (); ĊĠĠĠĠĠĠĠ Ġm Search View !!. query Hint Ġ= ĠgetString ( R . string . search _ podcast _ hint ) ĊĠĠĠĠĠĠĠ Ġ// modify ĠSearch View Ġproperty Ċ // ĠĠĠĠĠĠĠ Ġval Ġm Search Edit View : ĠSearch Auto Complete Ġ= Ġm Search View !!. findViewById ( R . id . search _ src _ text ) Ċ // ĠĠĠĠĠĠĠ Ġm Search Edit View !!. set Hint TextColor ( getResources (). getColor ( R . color . white )); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( item . itemId ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . search Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Search Fragment ", Ġ" click Ġsearch ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsearch Query Changed ( search Text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d (" Online Search Fragment ", Ġ" search Query Changed () Ġget Ġ" Ġ+ Ġsearch Text ) ĊĠĠĠĠĠĠĠ Ġif ( search Text . isEmpty ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . set Refresh ing ( true ) ĊĠĠĠĠĠĠĠ ĠviewModel . it unes Pod cast Searcher ( search Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Clicked ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġentry Ġ= Ġpod cast List . get ( position ) ĊĠĠĠĠĠĠĠ Ġif Ġ( entry . feed Url Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Fragment Event ( Online Search Activity :: class . java , Ġentry )) ĊĠĠĠ Ġ} Ċ } Ċ