package Ġcom . eller b ach . tv ma ze app . ui . search fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . eller b ach . tv ma ze app . data . Shows Repository Ċ import Ġcom . eller b ach . tv ma ze app . databinding . Search Show Fragment Binding Ċ import Ġcom . eller b ach . tv ma ze app . model . Show Database Ċ import Ġcom . eller b ach . tv ma ze app . model . get Database Ċ import Ġcom . eller b ach . tv ma ze app . network . get Network Service Ċ import Ġcom . eller b ach . tv ma ze app . ui . main activity . MainActivity ViewModel Ċ import Ġcom . eller b ach . tv ma ze app . ui . search fragment . adapter . Search Specific Show Adapter Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠSearch Show Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠSearch Show Fragment Binding ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġprivate Ġvar Ġspecific Show Adapter : ĠSearch Specific Show Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch ViewModel : ĠSearch Show ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrepository : ĠShows Repository ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdatabase : ĠShow Database ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cyclerView : ĠRecyclerView ĊĊĠĠĠ Ġprivate Ġval Ġmain Activity ViewModel : ĠMainActivity ViewModel Ġby Ġactivity ViewModels () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠSearch Show Fragment Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġdatabase Ġ= Ġget Database ( require Context ()) ĊĠĠĠĠĠĠĠ Ġrepository Ġ= ĠShows Repository ( get Network Service (), Ġdatabase . show DAO ) ĊĊĠĠĠĠĠĠĠ Ġsearch ViewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Show ViewModel . FACTORY ( repository ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) [ Search Show ViewModel :: class . java ] ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġobserve Search View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġspecific Show Adapter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Specific Show Adapter ( repository , Ġobject Ġ: ĠOn Search View ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Show ClickListener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Activity ViewModel . query . value Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Activity ViewModel . clear Search View ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġre cyclerView Ġ= Ġbinding . rv Shows . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( context , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġspecific Show Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Search View () Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Activity ViewModel . query . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Something To Search ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Query Results ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Query Results ( query : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . lifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch ViewModel . update Shows ( query ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsearch ViewModel . list Group . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspecific Show Adapter ?. update Shows ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhas Something To Search ( it : ĠString ?) Ġ= Ġ! it . isNull Or Blank () ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġspecific Show Adapter Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }