/* Ċ Ġ* ĠCreated Ġby ĠWe i yi ĠLi Ġon Ġ 2 0 2 0 - 0 5 - 3 1 . Ċ Ġ* Ġhttps :// github . com / li 2 Ċ Ġ*/ Ċ package Ġme . li 2 . movies . ui . discover Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . input method . Editor Info . IME _ ACTION _ SEARCH Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġcom . jak ew h art on . r xb ind ing 4 . widget . editor Action Events Ċ import Ġio . reactivex . rx java 3 . core . Observable Ċ import Ġio . reactivex . rx java 3 . kotlin . plus Assign Ċ import Ġme . li 2 . android . common . arch . observe On View Ċ import Ġme . li 2 . android . view . text . end Icon Click s Ċ import Ġme . li 2 . movies . R Ċ import Ġme . li 2 . movies . base . Base Fragment Ċ import Ġme . li 2 . movies . databinding . Discover Fragment Binding Ċ import Ġme . li 2 . movies . ui . movies . Query Category Ċ import Ġme . li 2 . movies . util . navigate Slide InOut Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠDis cover Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠDis cover Fragment Binding ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠDis cover ViewModel Factory ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Discover ViewModel > Ġ{ ĠviewModel Factory Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( in flater , ĠR . layout . discover _ fragment , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Ui ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcomposite Disposable Ġ+= ĠObservable . merge ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . search Input Layout . end Icon Click s (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . search EditText . editor Action Events (). flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . action Id Ġ== ĠI ME _ ACTION _ SEARCH ) ĠObservable . just ( Unit ) Ġelse ĠObservable . empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . search EditText . text . toString (). let Ġ{ Ġquery Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( query . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate Slide InOut ( Discover Fragment Directions . show Movies List ( Query Category ( query ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠObservable . merge ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . genres Categories Group View . on Category Click s , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Categories Group View . on Category Click s ĊĠĠĠĠĠĠĠ Ġ). subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate Slide InOut ( Discover Fragment Directions . show Movies List ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrender UI () Ġ= Ġwith ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . main Categories Ġ= Ġmain Categories ĊĊĠĠĠĠĠĠĠ Ġobserve On View ( genres Categories ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . genres Categories Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }