package Ġcom . am ade us . android . example . fragments . search Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . observe Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġcom . am ade us . android . example . R Ċ import Ġcom . am ade us . android . example . databinding . Fragment Hot els Offers Binding Ċ import Ġcom . am ade us . android . example . main Activity Ċ import Ġcom . am ade us . android . example . utils . g one Ċ import Ġcom . am ade us . android . example . utils . hide Keyboard Ċ import Ġcom . am ade us . android . example . utils . visible Ċ import Ġcom . am ade us . android . example . utils . visible Or G one Ċ import Ġcom . google . android . material . datepicker . Calendar Constraints Ċ import Ġcom . google . android . material . datepicker . Date Validator Point Forward Ċ import Ġcom . google . android . material . datepicker . Material DatePicker Ċ import Ġorg . th reet en . bp . Instant Ċ import Ġorg . th reet en . bp . LocalDate Ċ import Ġorg . th reet en . bp . Zone Id ĊĊ Ċ class ĠHot els Offers Fragment Ġ: ĠFragment ( R . layout . fragment _ hot els _ offers ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Hot els Offers Binding ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Hot els Offers ViewModel >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠHot els Offers Adapter ĊĊĠĠĠ Ġprivate Ġvar Ġcheck In Date : ĠLocalDate ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcheck Out Date : ĠLocalDate ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Hot els Offers Binding . bind ( view ) ĊĠĠĠĠĠĠĠ Ġmain Activity ()?. set Support ActionBar ( binding . toolbar ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġsubscribe () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! this :: adapter . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠHot els Offers Adapter ( viewModel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . destination Input . edit Text ?. setOn Editor ActionListener Ġ{ Ġv , Ġaction Id , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ SEARCH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . search By Destination ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck In Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Out Date ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn Editor ActionListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn Editor ActionListener Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . re cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġbinding . re cyclerView . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider Item Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . divider _ default ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbinding . date Picker . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconstraints Ġ= ĠCalendar Constraints . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Validator ( Date Validator Point Forward . now ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial DatePicker . Builder . date Range Picker () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Calendar Constraints ( constraints ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd On Positive Button ClickListener Ġ{ Ġselection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck In Date Ġ= ĠInstant . of Epoch Milli ( selection . first Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. at Zone ( Zone Id . system Default ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to LocalDate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Out Date Ġ= ĠInstant . of Epoch Milli ( selection . second Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. at Zone ( Zone Id . system Default ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to LocalDate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . date Picker . text Ġ= Ġ"$ check In Date Ġ- Ġ$ check Out Date " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show ( child FragmentManager , Ġ" date Picker ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . loading . observe ( view Lifecycle Owner ) Ġ{ ĠisLoading Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . no Data Text . g one ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . visible Or G one ( isLoading , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . error . observe ( view Lifecycle Owner ) Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . no Data Text . text Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . re cyclerView . g one ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . g one ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . no Data Text . visible ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . hotel Offers . observe ( view Lifecycle Owner ) Ġ{ Ġhotel Offers Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( hotel Offers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . re cyclerView . visible ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . no Data Text . g one ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġbinding . re cyclerView . adapter Ġ= Ġnull ĊĠĠĠ Ġ} Ċ Ċ } Ċ