package Ġru . a 1 0 2 4 bits . by the way . ui . fragments Ċ Ċ import Ġandroid . animation . Layout Transition Ċ import Ġandroid . app . Search Manager Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Provider Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . Search View Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġcom . code tro o pers . better pick ers . cal end ard ate picker . Calendar DatePicker Dialog Fragment Ċ import Ġcom . code tro o pers . better pick ers . cal end ard ate picker . Month Adapter Ċ import Ġcom . google . firebase . analytics . Firebase Analytics Ċ import Ġcom . google . firebase . crash . Firebase Crash Ċ import Ġkotlinx . android . synt hetic . main . fragment _ display _ all _ users .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ my _ user _ profile . view .* Ċ import Ġkotlinx . android . synt hetic . main . search ing _ parameters _ block .* Ċ import Ġkotlinx . android . synt hetic . main . search ing _ parameters _ block . view .* Ċ import Ġru . a 1 0 2 4 bits . by the way . App Ċ import Ġru . a 1 0 2 4 bits . by the way . R Ċ import Ġru . a 1 0 2 4 bits . by the way . adapter . Display All Users Adapter Ċ import Ġru . a 1 0 2 4 bits . by the way . model . Method Ċ import Ġru . a 1 0 2 4 bits . by the way . model . Response Ċ import Ġru . a 1 0 2 4 bits . by the way . model . Status Ċ import Ġru . a 1 0 2 4 bits . by the way . model . User Ċ import Ġru . a 1 0 2 4 bits . by the way . repository . Filter Ċ import Ġru . a 1 0 2 4 bits . by the way . repository . M _ SE X Ċ import Ġru . a 1 0 2 4 bits . by the way . repository . W _ SE X Ċ import Ġru . a 1 0 2 4 bits . by the way . util . Date Utils Ċ import Ġru . a 1 0 2 4 bits . by the way . util . Decimal Input Filter Ċ import Ġru . a 1 0 2 4 bits . by the way . util . close Keyboard Ċ import Ġru . a 1 0 2 4 bits . by the way . util . put Into Filter Ċ import Ġru . a 1 0 2 4 bits . by the way . view model . Display Users ViewModel Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠAll Users Fragment Ġ: ĠBase Fragment < Display Users ViewModel >() Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSIZE _ INITIAL _ ELEMENT S Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG _ ANAL YT ICS Ġ= Ġ" All Users Fragment _" ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠAll Users Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" LOG ", Ġ" All Users Fragment Ġinstall ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAll Users Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfilter : ĠFilter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdisplay Users Adapter : ĠDisplay All Users Adapter ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĠĠĠ Ġprivate Ġvar Ġcount Initial Elements Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġanalytics : ĠFirebase Analytics ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdate Dialog : ĠCalendar DatePicker Dialog Fragment ĊĊĠĠĠ Ġprivate Ġval Ġusers Observer s : ĠObserver < Response < List < User >>> Ġ= ĠObserver Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( response ?. status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġif Ġ( response . data Ġ== Ġnull ) Ġshow Error Loading () Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . data . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Users Adapter . set Items ( response . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Views After Search ( isNotEmpty List Users Ġ= Ġresponse . data . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" LOG ", Ġ" log Ġe :" Ġ+ Ġresponse . error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġloading Observer (): ĠObserver < Boolean ?> Ġ= ĠObserver Ġ{ Ġloading Ġ-> ĊĠĠĠĠĠĠĠ Ġloading Where Load Users . visibility Ġ= Ġif Ġ( loading Ġ== Ġtrue ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġanalytics Ġ= ĠFirebase Analytics . getInstance ( this . context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠApp . component . inject ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġanalytics . setCurrent Screen ( this . activity , Ġ" All Users Fragment ", Ġthis . java Class . simple Name ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Ġ= Ġit . filter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Users Adapter Ġ= ĠDisplay All Users Adapter ( this . context , ĠviewModel Ġ?: Ġreturn ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstall Logic To UI () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay All Users . layout Manager Ġ= ĠLinearLayoutManager ( context , ĠLinearLayout . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay All Users . has Fixed Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay All Users . adapter Ġ= Ġdisplay Users Adapter ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( viewModel ?. response ?. has Observer s () Ġ== Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel ?. response ?. observe ( this , Ġusers Observer s ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( viewModel ?. loading Status ?. has Observer s () Ġ== Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel ?. loading Status ?. observe ( this , Ġloading Observer ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel ?. getAll Users ( filter ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Prompt (" is First Enter All Users Fragment ", Ġcontext . resources . getString ( R . string . close _ hint ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources . getString ( R . string . hint _ all _ travel ers ), Ġcontext . resources . getString ( R . string . hint _ all _ travel ers _ description ), Ġsearch Parameters Text ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Crash . report ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Where Load Users . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠCalendar . getInstance () ĊĊĠĠĠĠĠĠĠ Ġdate Dialog Ġ= ĠCalendar DatePicker Dialog Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set First DayOfWeek ( Calendar . MON DAY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Theme Custom ( R . style . By the way DatePicker Dialog Theme ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pre selected Date ( now . get ( Calendar . YEAR ), Ġnow . get ( Calendar . MONTH ), Ġnow . get ( Calendar . DAY _ OF _ MONTH )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget View Factory Class () Ġ= ĠviewModel Factory ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Res () Ġ= ĠR . layout . fragment _ display _ all _ users ĊĊĠĠĠ Ġoverride Ġfun Ġget ViewModel Class (): ĠClass < Display Users ViewModel > Ġ= ĠDisplay Users ViewModel :: class . java ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . all _ users _ menu , Ġmenu ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsearch View Ġ= Ġmenu . find Item ( R . id . search _ all _ users _ item ). action View Ġas ĠSearch View ĊĠĠĠĠĠĠĠ Ġsearch View . set Search able Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( context . getSystem Service ( Context . SEARCH _ SERVICE ) Ġas ĠSearch Manager ). get Search able Info ( activity . component Name )) ĊĊĠĠĠĠĠĠĠ Ġsearch View . setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Users Adapter . filter Data ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalytics . log Event ( TAG _ ANAL YT ICS Ġ+ Ġ" SEARCH _ QUERY ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . close Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Users Adapter . filter Data ( new Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinstall Logic To UI () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġstart Budget . filters Ġ= ĠarrayOf ( Decimal Input Filter ()) ĊĠĠĠĠĠĠĠ Ġend Budget . filters Ġ= ĠarrayOf ( Decimal Input Filter ()) ĊĊĠĠĠĠĠĠĠ Ġstart Age . adapter Ġ= ĠArray Adapter < String >( context , Ġandroid . R . layout . simple _ spinner _ item , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel ?. years Old Users ) ĊĠĠĠĠĠĠĠ Ġstart Age . on ItemSelected Listener Ġ= Ġobject Ġ: ĠAdapter View . On ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( p 0 : ĠAdapter View < *> ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( p 0 : ĠAdapter View < *> ?, Ġp 1 : ĠView ?, Ġposition : ĠInt , Ġp 3 : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count Initial Elements ++ Ġ< ĠSIZE _ INITIAL _ ELEMENT S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Age . setSelection ( filter . start Age ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . start Age Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġend Age . adapter Ġ= ĠArray Adapter < String >( context , Ġandroid . R . layout . simple _ spinner _ item , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel ?. years Old Users ) ĊĠĠĠĠĠĠĠ Ġend Age . on ItemSelected Listener Ġ= Ġobject Ġ: ĠAdapter View . On ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( p 0 : ĠAdapter View < *> ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( p 0 : ĠAdapter View < *> ?, Ġp 1 : ĠView ?, Ġposition : ĠInt , Ġp 3 : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count Initial Elements ++ Ġ< ĠSIZE _ INITIAL _ ELEMENT S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Age . setSelection ( filter . end Age ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . end Age Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsex Buttons . setOn Checked ChangeListener Ġ{ Ġ_, Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . sex Ġ= Ġwhen Ġ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsex M . id Ġ-> ĠM _ SE X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsex W . id Ġ-> ĠW _ SE X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsex Buttons . check ( when Ġ( filter . sex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM _ SE X Ġ-> Ġsex M . id ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW _ SE X Ġ-> Ġsex W . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsex Any . id ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġrestore Methods () ĊĊĠĠĠĠĠĠĠ ĠlistOf ( icon Car , Ġicon H itch H ick ing , Ġicon Plane , Ġicon Bus , Ġicon Train ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Car Ġ-> Ġtravel Car Text . put Into Filter ( Method . CAR . link , Ġfilter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Train Ġ-> Ġtravel Train Text . put Into Filter ( Method . TRAIN . link , Ġfilter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Bus Ġ-> Ġtravel Bus Text . put Into Filter ( Method . BUS . link , Ġfilter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon H itch H ick ing Ġ-> Ġtravel H itch H ik ing Text . put Into Filter ( Method . H ITCH H IK ING . link , Ġfilter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Plane Ġ-> Ġtravel Plane Text . put Into Filter ( Method . PL ANE . link , Ġfilter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Ch ose Date Buttons () ĊĠĠĠĠĠĠĠ Ġchose Date Start . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Date From Dialog ( cho se Date Start ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġchose Date Start . setOn Touch Listener ( Date Utils . on Date Touch ) ĊĊĠĠĠĠĠĠĠ Ġchose Date End . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Date Ar rived Dialog ( cho se Date End ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġchose Date End . setOn Touch Listener ( Date Utils . on Date Touch ) ĊĠĠĠĠĠĠĠ Ġview _ contain _ block _ parameters . layout Transition . set Duration ( 6 5 0 L ) ĊĠĠĠĠĠĠĠ Ġsearch Button Parameters . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanalytics . log Event ( TAG _ ANAL YT ICS Ġ+ Ġ" CLICK _ ON _ SEARCH ", Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . start Budget Ġ= Ġif Ġ( start Budget . text . isNotEmpty ()) ĠInteger . parseInt ( start Budget . text . toString ()) Ġelse Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . end Budget Ġ= Ġif Ġ( end Budget . text . isNotEmpty ()) ĠInteger . parseInt ( end Budget . text . toString ()) Ġelse Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . end Budget Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . start Budget Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . start City Ġ= Ġstart City . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . end City Ġ= Ġend City . text . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Slide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock _ search _ parameters . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Log Event For Search () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcancel Parameters . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( filter Ġ== ĠFilter ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock _ search _ parameters . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanalytics . log Event ( TAG _ ANAL YT ICS Ġ+ Ġ" CLICK _ ON _ CANCEL ", Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Ġ= ĠFilter () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Age . setSelection ( filter . start Age ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Age . setSelection ( filter . end Age ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Budget . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Budget . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart City . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend City . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchose Date Start . set Compound Draw ables ( null , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchose Date End . set Compound Draw ables ( null , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Ch ose Date Buttons () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsex Buttons . check ( sex Any . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtravel Car Text . is Activated Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtravel Bus Text . is Activated Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtravel Plane Text . is Activated Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtravel Train Text . is Activated Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtravel H itch H ik ing Text . is Activated Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsearch Parameters Text . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( block _ search _ parameters . visibility Ġ== ĠView . GONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock _ search _ parameters . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock _ search _ parameters . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrestore Methods () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( filter Method Ġin Ġfilter . method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( filter Method . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( filter Method . key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMethod . TRAIN . link Ġ-> Ġtravel Train Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMethod . CAR . link Ġ-> Ġtravel Car Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMethod . BUS . link Ġ-> Ġtravel Bus Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMethod . PL ANE . link Ġ-> Ġtravel Plane Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMethod . H ITCH H IK ING . link Ġ-> Ġtravel H itch H ik ing Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠNullPointerException (" Not Ġfind ĠKey ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. is Activated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Date Ar rived Dialog ( view : ĠTextView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view . text . contains (" Ġ Ġ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . text Ġ= ĠgetString ( R . string . filters _ all _ users _ empty _ date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . endDate Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . set Compound Draw ables ( null , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdate To Ġ= ĠCalendar . getInstance () Ġ// current Ġtime Ġby Ġdefault ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . endDate Ġ> Ġ 0 L ) Ġdate To . time In Millis Ġ= Ġfilter . endDate ĊĠĠĠĠĠĠĠ Ġdate Dialog Ġ= ĠCalendar DatePicker Dialog Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set First DayOfWeek ( Calendar . MON DAY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Theme Custom ( R . style . By the way DatePicker Dialog Theme ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pre selected Date ( date To . get ( Calendar . YEAR ), Ġdate To . get ( Calendar . MONTH ), Ġdate To . get ( Calendar . DAY _ OF _ MONTH )) ĊĊĠĠĠĠĠĠĠ Ġdate Dialog . setDate Range ( Month Adapter . Calendar Day ( if Ġ( filter . startDate Ġ== Ġ 0 L ) ĠSystem . currentTimeMillis () Ġelse Ġfilter . startDate ), Ġnull ) ĊĠĠĠĠĠĠĠ Ġdate Dialog . setOn Date Set Listener Ġ{ Ġ_, Ġyear , Ġmonth OfYear , Ġday OfMonth Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . text Ġ= ĠStringBuilder (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( day OfMonth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( context . resources . getString Array ( R . array . months _ array )[ month OfYear ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . endDate Ġ= ĠDate Utils . getLong From Date ( year Ġ= Ġyear , Ġmonth Ġ= Ġmonth OfYear , Ġday Ġ= Ġday OfMonth ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . set Compound Draw ables With Intr insic Bounds ( 0 , Ġ 0 , ĠR . drawable . ic _ close _ vector _ black , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdate Dialog . show ( activity . support FragmentManager , Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Date From Dialog ( view : ĠTextView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view . text . contains (" Ġ Ġ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . text Ġ= ĠgetString ( R . string . filters _ all _ users _ empty _ date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . startDate Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . set Compound Draw ables ( null , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdate From Ġ= ĠCalendar . getInstance () Ġ// current Ġtime Ġby Ġdefault ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . startDate Ġ> Ġ 0 L ) Ġdate From . time In Millis Ġ= Ġfilter . startDate ĊĊĠĠĠĠĠĠĠ Ġdate Dialog Ġ= ĠCalendar DatePicker Dialog Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set First DayOfWeek ( Calendar . MON DAY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Theme Custom ( R . style . By the way DatePicker Dialog Theme ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pre selected Date ( date From . get ( Calendar . YEAR ), Ġdate From . get ( Calendar . MONTH ), Ġdate From . get ( Calendar . DAY _ OF _ MONTH )) ĊĊĠĠĠĠĠĠĠ Ġdate Dialog . setDate Range ( Month Adapter . Calendar Day ( System . currentTimeMillis ()), Ġnull ) ĊĠĠĠĠĠĠĠ Ġdate Dialog . setOn Date Set Listener Ġ{ Ġ_, Ġyear , Ġmonth OfYear , Ġday OfMonth Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . text Ġ= ĠStringBuilder (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( day OfMonth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( context . resources . getString Array ( R . array . months _ array )[ month OfYear ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . startDate Ġ= ĠDate Utils . getLong From Date ( year Ġ= Ġyear , Ġmonth Ġ= Ġmonth OfYear , Ġday Ġ= Ġday OfMonth ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . set Compound Draw ables With Intr insic Bounds ( 0 , Ġ 0 , ĠR . drawable . ic _ close _ vector _ black , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdate Dialog . show ( activity . support FragmentManager , Ġ"") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġset Log Event For Search () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . endDate Ġ!= Ġ 0 L ) Ġanalytics . log Event ( TAG _ ANAL YT ICS Ġ+ Ġ" END _ DATE ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . startDate Ġ!= Ġ 0 L ) Ġanalytics . log Event ( TAG _ ANAL YT ICS Ġ+ Ġ" START _ DATE ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . end Age Ġ!= Ġ- 1 ) Ġanalytics . log Event ( TAG _ ANAL YT ICS Ġ+ Ġ" END _ AGE ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . start Age Ġ!= Ġ- 1 ) Ġanalytics . log Event ( TAG _ ANAL YT ICS Ġ+ Ġ" START _ AGE ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . end City . isNotBlank ()) Ġanalytics . log Event ( TAG _ ANAL YT ICS Ġ+ Ġ" END _ C ITY ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . start City . isNotBlank ()) Ġanalytics . log Event ( TAG _ ANAL YT ICS Ġ+ Ġ" START _ C ITY ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . end Budget Ġ!= Ġ- 1 ) Ġanalytics . log Event ( TAG _ ANAL YT ICS Ġ+ Ġ" START _ BU D GET ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . start Budget Ġ!= Ġ- 1 ) Ġanalytics . log Event ( TAG _ ANAL YT ICS Ġ+ Ġ" END _ BU D GET ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . sex Ġ!= Ġ 0 ) Ġanalytics . log Event ( TAG _ ANAL YT ICS Ġ+ Ġ" SE X _ ANY ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . sex Ġ!= ĠW _ SE X ) Ġanalytics . log Event ( TAG _ ANAL YT ICS Ġ+ Ġ" SE X _ F EM ALE ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . sex Ġ!= ĠM _ SE X ) Ġanalytics . log Event ( TAG _ ANAL YT ICS Ġ+ Ġ" SE X _ M ALE ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġ// Ġif Ġ( filter . method . size Ġ!= ĠM _ SE X ) Ġanalytics . log Event ( TAG _ ANAL YT ICS Ġ+ Ġ" SE X _ M ALE ", Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanimation Slide () Ġ{ ĊĠĠĠĠĠĠĠ Ġview _ contain _ block _ parameters . layout Transition . add Transition Listener ( object Ġ: ĠLayout Transition . Transition Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġstart Transition ( p 0 : ĠLayout Transition ?, Ġp 1 : ĠViewGroup ?, Ġp 2 : ĠView ?, Ġp 3 : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġend Transition ( p 0 : ĠLayout Transition ?, Ġp 1 : ĠViewGroup ?, Ġview : ĠView , Ġp 3 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( view . id Ġ== Ġblock _ search _ parameters . id ) Ġ&& Ġ( block _ search _ parameters . visibility Ġ== ĠView . GONE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Views Before Search () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel ?. getAll Users ( filter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview _ contain _ block _ parameters . layout Transition . remove Transition Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Views Before Search () Ġ{ ĊĠĠĠĠĠĠĠ Ġdisplay All Users . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġblock _ empty _ users . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Views After Search ( isNotEmpty List Users : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isNotEmpty List Users ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay All Users . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock _ empty _ users . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Ch ose Date Buttons () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar . time In Millis Ġ= Ġfilter . startDate ĊĠĠĠĠĠĠĠ Ġchose Date Start . text Ġ= Ġif Ġ( filter . startDate Ġ> Ġ 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel ?. getText From Dates ( filter . startDate , Ġcontext . resources . getString Array ( R . array . months _ array )) Ġelse ĠgetString ( R . string . filters _ all _ users _ empty _ date ) ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . startDate Ġ> Ġ 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchose Date Start . set Compound Draw ables With Intr insic Bounds ( 0 , Ġ 0 , ĠR . drawable . ic _ close _ vector _ black , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġcalendar . time In Millis Ġ= Ġfilter . endDate ĊĠĠĠĠĠĠĠ Ġchose Date End . text Ġ= Ġif Ġ( filter . endDate Ġ> Ġ 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel ?. getText From Dates ( filter . endDate , Ġcontext . resources . getString Array ( R . array . months _ array )) Ġelse ĠgetString ( R . string . filters _ all _ users _ empty _ date ) ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . endDate Ġ> Ġ 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchose Date End . set Compound Draw ables With Intr insic Bounds ( 0 , Ġ 0 , ĠR . drawable . ic _ close _ vector _ black , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Error Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġloading Where Load Users ĊĠĠĠ Ġ} Ċ } ĊĊ