package Ġcom . wen ha iz . him usic . module . search Ċ Ċ 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 . support . v 7 . widget . RecyclerView Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Image Button Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . Relative Layout Ċ import Ġandroid . widget . TextView Ċ import Ġbutter knife . BindView Ċ import Ġbutter knife . B utter Kn ife Ċ import Ġbutter knife . OnClick Ċ import Ġbutter knife . Un binder Ċ import Ġcom . wen ha iz . him usic . R Ċ import Ġcom . wen ha iz . him usic . data . bean . Search History Ċ import Ġcom . wen ha iz . him usic . data . bean . Search History _ Ċ import Ġcom . wen ha iz . him usic . data . bean . Song Ċ import Ġcom . wen ha iz . him usic . ext . hide Ċ import Ġcom . wen ha iz . him usic . ext . show Ċ import Ġcom . wen ha iz . him usic . http . data . Search Tip Ċ import Ġcom . wen ha iz . him usic . module . main . Main Fragment Ċ import Ġcom . wen ha iz . him usic . module . play . service . Play Proxy Ċ import Ġcom . wen ha iz . him usic . utils . Box Util Ċ import Ġcom . wen ha iz . him usic . widget . Song Ops Dialog Ċ Ċ class ĠSearch Fragment Ġ: ĠFragment (), ĠSearch Contract . View Ġ{ ĊĊĠĠĠ Ġ@ BindView ( R . id . search _ view ) ĊĠĠĠ Ġlateinit Ġvar Ġm Search View : ĠLinearLayout ĊĠĠĠ Ġ@ BindView ( R . id . search _ begin _ search ) ĊĠĠĠ Ġlateinit Ġvar Ġm Tv Begin Search : ĠTextView ĊĠĠĠ Ġ// ĠĠĠ Ġ@ BindView ( R . id . hot _ search ) Ċ // ĠĠĠ Ġlateinit Ġvar Ġm Hot Search : ĠLinearLayout ĊĠĠĠ Ġ@ BindView ( R . id . search _ content _ list ) ĊĠĠĠ Ġlateinit Ġvar Ġm Content List : ĠRecyclerView ĊĠĠĠ Ġ@ BindView ( R . id . loading ) ĊĠĠĠ Ġlateinit Ġvar Ġm Loading : ĠLinearLayout ĊĠĠĠ Ġ@ BindView ( R . id . loading _ failed ) ĊĠĠĠ Ġlateinit Ġvar Ġm Load Failed : ĠLinearLayout ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Un Binder : ĠU nb inder ĊĠĠĠ Ġlateinit Ġvar Ġm Presenter : ĠSearch Contract . Presenter ĊĠĠĠ Ġvar Ġsearch Keyword Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġresult S ongs : ĠList < Song > ĊĠĠĠ Ġprivate Ġvar Ġcurrent Content Ġ= ĠCONTENT _ SEARCH _ HISTORY ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠSearch Presenter ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent View Ġ= Ġinflater . inflate ( R . layout . fragment _ search , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġm Un Binder Ġ= ĠB utter Kn ife . bind ( this , Ġcontent View ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġreturn Ġcontent View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Presenter ( presenter : ĠSearch Contract . Presenter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Presenter Ġ= Ġpresenter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget View Context (): ĠContext Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Search History () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ OnClick ( R . id . search _ begin _ search , ĠR . id . loading _ failed ) ĊĠĠĠ Ġfun ĠonClick ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . search _ begin _ search Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĲľç´¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Search ( search Keyword ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . loading _ failed Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĩįæĸ° æĲľç´¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Search ( search Keyword ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbegin Search ( keyword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( keyword )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain Fragment : ĠMain Fragment Ġ= Ġfragment Manager !!. find Fragment ById ( R . id . main _ container ) Ġas ĠMain Fragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Fragment . hide Soft Input () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Presenter . search ByKey Word ( keyword ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Search History ( keyword ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Content Ġ= ĠCONTENT _ SEARCH _ RESULT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Search History ( keyword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbox Ġ= ĠBox Util . get Box Store ( context !! ). box For ( Search History :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġquery Result Ġ= Ġbox . query (). equal ( Search History _. keyword , Ġkeyword ). build (). find () ĊĠĠĠĠĠĠĠ Ġif Ġ( query Result . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch History Ġ= Ġquery Result [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch History . search Time Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbox . put ( search History ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Search Ġ= ĠSearch History ( null , Ġkeyword , ĠSystem . currentTimeMillis ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbox . put ( new Search ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Search History () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Content Ġ= ĠCONTENT _ SEARCH _ HISTORY Ċ // ĠĠĠĠĠĠĠ Ġm Hot Search . show () ĊĠĠĠĠĠĠĠ Ġm Search View . hide () ĊĠĠĠĠĠĠĠ Ġval Ġbox Ġ= ĠBox Util . get Box Store ( context !! ). box For ( Search History :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġsearch History Ġ= Ġbox . query (). not Equal ( Search History _. keyword , Ġ""). order Desc ( Search History _. search Time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (). find () ĊĠĠĠĠĠĠĠ Ġif Ġ( m Content List . adapter Ġis ĠSearch History Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( m Content List . adapter Ġas ĠSearch History Adapter ). setData ( search History ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Content List . adapter Ġ= ĠSearch History Adapter ( search History ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Content List . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Search Recommend ( keyword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch Keyword Ġ= Ġkeyword ĊĠĠĠĠĠĠĠ Ġm Search View . show () ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Ġ= Ġ" æĲľç´¢ \" $ keyword \"" ĊĠĠĠĠĠĠĠ Ġm Tv Begin Search . text Ġ= Ġdisplay ĊĠĠĠĠĠĠĠ Ġcurrent Content Ġ= ĠCONTENT _ RE COMM END _ KEYWORD ĊĠĠĠĠĠĠĠ Ġm Presenter . load Search Recommend ( search Keyword ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Search Recommend Loaded ( recommends : ĠList < Search Tip >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Content Ġ== ĠCONTENT _ RE COMM END _ KEYWORD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Content List . adapter Ġis ĠSearch Recommend Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( m Content List . adapter Ġas ĠSearch Recommend Adapter ). setData ( recommends ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Content List . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Content List . adapter Ġ= ĠSearch Recommend Adapter ( recommends ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon SearchResult ( songs : ĠList < Song >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Content Ġ== ĠCONTENT _ SEARCH _ RESULT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Search View . hide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult S ongs Ġ= Ġsongs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Content List . adapter Ġ= ĠResult S ongs Adapter ( result S ongs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Content List . layout Manager Ġ= ĠLinearLayoutManager ( context , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Loading . hide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Content List . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Loading . show () ĊĠĠĠĠĠĠĠ Ġm Content List . hide () ĊĠĠĠĠĠĠĠ Ġm Load Failed . hide () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Failure ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity !!. run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Load Failed . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Loading . hide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Content List . hide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Search View . hide () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġval Ġmain Fragment : ĠMain Fragment Ġ= Ġfragment Manager !!. find Fragment ById ( R . id . main _ container ) Ġas ĠMain Fragment ĊĠĠĠĠĠĠĠ Ġmain Fragment . hide Search Bar () ĊĠĠĠĠĠĠĠ Ġm Un Binder . unbind () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCONTENT _ SEARCH _ HISTORY Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCONTENT _ RE COMM END _ KEYWORD Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCONTENT _ SEARCH _ RESULT Ġ= Ġ 0 x 0 2 ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġinner Ġclass ĠResult S ongs Adapter ( private Ġvar Ġsongs : ĠList < Song >) Ġ: ĠRecyclerView . Adapter < Result S ongs Adapter . ViewHolder >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsong Ġ= Ġsongs [ position ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . song Name . text Ġ= Ġsong . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdisplay Artist Ġ= Ġ"${ song . artist Name } Â· ${ song . album Name }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . artist . text Ġ= Ġdisplay Artist ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . btn More . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠSong Ops Dialog ( context !! , Ġsong , Ġactivity !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġis ĠPlay Proxy ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠPlay Proxy ). play Song ( song ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġsongs . size ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . item _ search _ result , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( item View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsong Name : ĠTextView Ġ= ĠitemView . findViewById ( R . id . result _ song _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġartist : ĠTextView Ġ= ĠitemView . findViewById ( R . id . result _ artist _ album ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbtn More : ĠImage Button Ġ= ĠitemView . findViewById ( R . id . result _ more ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem : ĠLinearLayout Ġ= ĠitemView . findViewById ( R . id . result _ item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠSearch History Adapter ( private Ġvar Ġhistory : ĠList < Search History >) Ġ: ĠRecyclerView . Adapter < Search History Adapter . ViewHolder >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . item _ search _ history , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( item View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch History Ġ= Ġhistory [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . history Keyword . text Ġ= Ġsearch History . keyword ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . delete History . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBox Util . get Box Store ( context !! ). box For ( Search History :: class . java ). remove ( search History ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Search History () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Keyword Ġ= Ġsearch History . keyword ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain Fragment : ĠMain Fragment Ġ= Ġfragment Manager !!. find Fragment ById ( R . id . main _ container ) Ġas ĠMain Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Fragment . set Search Keyword ( search History . keyword ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Search ( search History . keyword ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġhistory . size ĊĊĠĠĠĠĠĠĠ Ġfun ĠsetData ( new Data : ĠList < Search History >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhistory Ġ= ĠnewData ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhistory Keyword : ĠTextView Ġ= ĠitemView . findViewById ( R . id . search _ history _ keyword ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelete History : ĠImage Button Ġ= ĠitemView . findViewById ( R . id . search _ delete _ history ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem : ĠRelative Layout Ġ= ĠitemView . findViewById ( R . id . search _ history _ item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠSearch Recommend Adapter ( private Ġvar Ġkeywords : ĠList < Search Tip >) ĊĠĠĠĠĠĠĠ Ġ: ĠRecyclerView . Adapter < Search Recommend Adapter . ViewHolder >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġkeywords . size ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . item _ search _ recommend , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( item View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecommend Keyword Ġ= Ġkeywords [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . keyword . text Ġ= Ġrecommend Keyword . tip ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Keyword Ġ= Ġrecommend Keyword . tip ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain Fragment : ĠMain Fragment Ġ= Ġfragment Manager !!. find Fragment ById ( R . id . main _ container ) Ġas ĠMain Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Fragment . set Search Keyword ( recommend Keyword . tip ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Search ( recommend Keyword . tip ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠsetData ( new Keywords : ĠList < Search Tip >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeywords Ġ= Ġnew Keywords ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkeyword : ĠTextView Ġ= ĠitemView . findViewById ( R . id . search _ recommend _ keyword ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem : ĠRelative Layout Ġ= ĠitemView . findViewById ( R . id . search _ recommend _ item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }