package Ġserv ic est ack . net . tech stack sk otlin Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . app . FragmentManager Ċ import Ġandroid . support . v 4 . app . Fragment Pager Adapter Ċ import Ġandroid . support . v 4 . app . Fragment Transaction Ċ import Ġandroid . support . v 4 . view . ViewPager Ċ import Ġandroid . support . v 7 . app . ActionBar Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view .* Ċ import Ġandroid . widget .* Ċ import Ġjava . util .* Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠAction Bar . Tab Listener Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ android . support . v 4 . view . Pager Adapter ] Ġthat Ġwill Ġprovide ĊĠĠĠĠ Ġ* Ġfragments Ġfor Ġeach Ġof Ġthe Ġsections . ĠWe Ġuse Ġa ĊĠĠĠĠ Ġ* Ġ[ Fragment Pager Adapter ] Ġderivative , Ġwhich Ġwill Ġkeep Ġevery ĊĠĠĠĠ Ġ* Ġloaded Ġfragment Ġin Ġmemory . ĠIf Ġthis Ġbecomes Ġtoo Ġmemory Ġint ensive , Ġit ĊĠĠĠĠ Ġ* Ġmay Ġbe Ġbest Ġto Ġswitch Ġto Ġa ĊĠĠĠĠ Ġ* Ġ[ android . support . v 4 . app . Fragment State Pager Adapter ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġvar Ġm Sections Pager Adapter : ĠSe ctions Pager Adapter ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ ViewPager ] Ġthat Ġwill Ġhost Ġthe Ġsection Ġcontents . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġvar Ġm ViewPager : ĠView Pager ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġthe Ġaction Ġbar . ĊĠĠĠĠĠĠĠ Ġval Ġaction Bar Ġ= Ġsupport ActionBar !! ĊĠĠĠĠĠĠĠ Ġaction Bar . navigation Mode Ġ= ĠAction Bar . NAV IG ATION _ MODE _ TAB S ĊĠĠĠĠĠĠĠ Ġaction Bar . display Options Ġ= ĠAction Bar . DISPLAY _ SHOW _ HOME Ġor ĠAction Bar . DISPLAY _ SHOW _ TITLE ĊĠĠĠĠĠĠĠ Ġaction Bar . setBackground Drawable ( resources . get Drawable ( R . color . action bar _ background )) ĊĠĠĠĠĠĠĠ Ġaction Bar . set Stack ed Background Drawable ( resources . get Drawable ( R . color . tab _ background )) ĊĠĠĠĠĠĠĠ Ġaction Bar . setIcon ( R . drawable . ic _ action bar ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe Ġadapter Ġthat Ġwill Ġreturn Ġa Ġfragment Ġfor Ġeach Ġof Ġthe Ġthree ĊĠĠĠĠĠĠĠ Ġ// Ġprimary Ġsections Ġof Ġthe Ġactivity . ĊĠĠĠĠĠĠĠ Ġm Sections Pager Adapter Ġ= ĠSe ctions Pager Adapter ( support FragmentManager ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġthe ĠView Pager Ġwith Ġthe Ġsections Ġadapter . ĊĠĠĠĠĠĠĠ Ġm ViewPager Ġ= ĠfindViewById < ViewPager >( R . id . pager ) ĊĠĠĠĠĠĠĠ Ġm ViewPager ?. adapter Ġ= Ġm Sections Pager Adapter ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġsw ip ing Ġbetween Ġdifferent Ġsections , Ġselect Ġthe Ġcorresponding ĊĠĠĠĠĠĠĠ Ġ// Ġtab . ĠWe Ġcan Ġalso Ġuse ĠAction Bar . Tab # select () Ġto Ġdo Ġthis Ġif Ġwe Ġhave ĊĠĠĠĠĠĠĠ Ġ// Ġa Ġreference Ġto Ġthe ĠTab . ĊĠĠĠĠĠĠĠ Ġm ViewPager ?. setOn Page ChangeListener ( object Ġ: ĠView Pager . Simple On Page ChangeListener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Bar . setSelected Navigation Item ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġeach Ġof Ġthe Ġsections Ġin Ġthe Ġapp , Ġadd Ġa Ġtab Ġto Ġthe Ġaction Ġbar . ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. m Sections Pager Adapter !!. count Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġtab Ġwith Ġtext Ġcorresponding Ġto Ġthe Ġpage Ġtitle Ġdefined Ġby ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġadapter . ĠAlso Ġspecify Ġthis ĠActivity Ġobject , Ġwhich Ġimplements ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe ĠTab Listener Ġinterface , Ġas Ġthe Ġcallback Ġ( listener ) Ġfor Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġtab Ġis Ġselected . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Bar . add Tab ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Bar . new Tab (). setText ( m Sections Pager Adapter ?. getPage Title ( i )). set Tab Listener ( this )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġmenu ; Ġthis Ġadds Ġitems Ġto Ġthe Ġaction Ġbar Ġif Ġit Ġis Ġpresent . ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġaction Ġbar Ġitem Ġclicks Ġhere . ĠThe Ġaction Ġbar Ġwill ĊĠĠĠĠĠĠĠ Ġ// Ġautomatically Ġhandle Ġclicks Ġon Ġthe ĠHome / Up Ġbutton , Ġso Ġlong ĊĠĠĠĠĠĠĠ Ġ// Ġas Ġyou Ġspecify Ġa Ġparent Ġactivity Ġin ĠAndroid Manifest . xml . ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . itemId ĊĊĠĠĠĠĠĠĠ Ġ// no inspection ĠSimpl ifiable If Statement ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠR . id . action _ settings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Tab Selected ( tab : ĠAction Bar . Tab , Ġfragment Transaction : ĠFragment Transaction ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġthe Ġgiven Ġtab Ġis Ġselected , Ġswitch Ġto Ġthe Ġcorresponding Ġpage Ġin ĊĠĠĠĠĠĠĠ Ġ// Ġthe ĠView Pager . ĊĠĠĠĠĠĠĠ Ġm ViewPager ?. currentItem Ġ= Ġtab . position ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Tab Un selected ( tab : ĠAction Bar . Tab , Ġfragment Transaction : ĠFragment Transaction ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Tab Re selected ( tab : ĠAction Bar . Tab , Ġfragment Transaction : ĠFragment Transaction ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġ[ Fragment Pager Adapter ] Ġthat Ġreturns Ġa Ġfragment Ġcorresponding Ġto ĊĠĠĠĠ Ġ* Ġone Ġof Ġthe Ġsections / tabs / pages . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠSe ctions Pager Adapter ( fm : ĠFragment Manager ) Ġ: ĠFragment Pager Adapter ( fm ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġ 3 Ġtotal Ġpages . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Page Title ( position : ĠInt ): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġreturn Ġ" Top ĠR ated " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġreturn Ġ" Tech Stack s " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġreturn Ġ" Tech nologies " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Invalid Ġposition : Ġ$ position ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ): ĠFragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġreturn ĠTop R ated Fragment . create ( position Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġreturn ĠTech Stack s Fragment . create ( position Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġreturn ĠTechnologies Fragment . create ( position Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Invalid Ġposition : Ġ$ position ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠTop R ated Fragment Ġ: ĠFragment (), ĠApp . AppData Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġselected Category : ĠOption ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp . data . addListener ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp . data . load App Overview () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= Ġinflater !!. inflate ( R . layout . fragment _ top _ r ated , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspinner Ġ= Ġroot View . findViewById ( R . id . spinner Category ) Ġas ĠSp inner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner . on ItemSelected Listener Ġ= Ġobject Ġ: ĠAdapter View . On ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( parent : ĠAdapter View <* >, Ġview : ĠView , Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Category Ġ= ĠApp . data . app Overview Response ?. all Ti ers ! ![ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Top Tech nologies ( App . data , Ġroot View . findViewById ( R . id . list Top R ated ) Ġas ĠListView ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Category Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġroot View . findViewById ( R . id . list Top R ated ) Ġas ĠListView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . on ItemClickListener Ġ= ĠAdapter View . On ItemClickListener Ġ{ Ġparent , Ġview , Ġposition , Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġget Top Tech nologies ( App . data )[ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . open Tech nology ( activity , Ġresult . slug ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġroot View ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġcategory Spinner : ĠSp inner ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġactivity !!. findViewById ( R . id . spinner Category ) Ġas ĠSp inner ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġtop R ated ListView : ĠListView ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġactivity !!. findViewById ( R . id . list Top R ated ) Ġas ĠListView ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonUpdate ( data : ĠApp . AppData , ĠdataType : ĠApp . DataType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( dataType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . DataType . App Overview Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspinner Ġ= Ġcategory Spinner ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( spinner Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategories Ġ= Ġdata . app Overview Response !!. all Ti ers . map Ġ{ Ġit . title Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspinner . adapter Ġ= ĠArray Adapter ( activity , Ġandroid . R . layout . simple _ spinner _ item , Ġcategories ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġtop R ated ListView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Top Tech nologies ( data , Ġlist ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġrefresh Top Tech nologies ( data : ĠApp . AppData , Ġlist : ĠListView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Tech nology Names Ġ= Ġget Top Tech nologies ( data ). map Ġ{ Ġit . name Ġ+ Ġ" Ġ(" Ġ+ Ġit . stacks Count Ġ+ Ġ")" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . adapter Ġ= ĠArray Adapter ( activity , Ġandroid . R . layout . simple _ list _ item _ 1 , Ġtop Tech nology Names ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Top Tech nologies ( data : ĠApp . AppData ): ĠArrayList < Tech nology Info > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtop Tech nologies Ġ= Ġdata . app Overview Response !!. top Tech nologies ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Category Ġ!= Ġnull Ġ&& Ġselected Category !!. value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Tech nologies Ġ= ĠArrayList ( top Tech nologies . filter Ġ{ Ġit . tier Ġ== Ġselected Category ?. value Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtop Tech nologies ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( section Number : ĠInt ): ĠTop R ated Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTop R ated Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠTech Stack s Fragment Ġ: ĠFragment (), ĠApp . AppData Listener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp . data . addListener ( this ). search Tech Stack s ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= Ġinflater . inflate ( R . layout . fragment _ tech _ stacks , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtxt Search Ġ= Ġroot View . findViewById ( R . id . search Tech Stack s ) Ġas ĠEditText ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Search . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . data . search Tech Stack s ( s . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġroot View . findViewById ( R . id . list Tech Stack s ) Ġas ĠListView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . on ItemClickListener Ġ= ĠAdapter View . On ItemClickListener Ġ{ Ġparent , Ġview , Ġposition , Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠApp . data . search Tech Stack s Response !!. results [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . open Tech Stack ( activity , Ġresult . slug ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġroot View ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠlistView Results : ĠListView ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġactivity !!. findViewById ( R . id . list Tech Stack s ) Ġas ĠListView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonUpdate ( data : ĠApp . AppData , ĠdataType : ĠApp . DataType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( dataType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . DataType . Search Tech Stack s Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠlistView Results ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġdata . search Tech Stack s Response !!. results . map Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . adapter Ġ= ĠArray Adapter ( activity , Ġandroid . R . layout . simple _ list _ item _ 1 , Ġresults ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( section Number : ĠInt ): ĠTech Stack s Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTech Stack s Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠTechnologies Fragment Ġ: ĠFragment (), ĠApp . AppData Listener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp . data . addListener ( this ). search Tech nologies ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= Ġinflater . inflate ( R . layout . fragment _ tech nologies , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtxt Search Ġ= Ġroot View . findViewById < EditText >( R . id . search Tech nologies ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Search . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . data . search Tech nologies ( s . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġroot View . findViewById ( R . id . list Tech nologies ) Ġas ĠListView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . on ItemClickListener Ġ= ĠAdapter View . On ItemClickListener Ġ{ Ġparent , Ġview , Ġposition , Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠApp . data . search Tech nologies Response !!. results [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . open Tech nology ( activity , Ġresult . slug ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġroot View ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠlistView Results : ĠListView ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġactivity !!. findViewById < ListView >( R . id . list Tech nologies ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonUpdate ( data : ĠApp . AppData , ĠdataType : ĠApp . DataType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( dataType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . DataType . Search Tech nologies Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠlistView Results ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġdata . search Tech nologies Response !!. results . map Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . adapter Ġ= ĠArray Adapter ( activity , Ġandroid . R . layout . simple _ list _ item _ 1 , Ġresults ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( section Number : ĠInt ): ĠTechnologies Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTechnologies Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ