package Ġcom . nil s ino ji ya . co win 2 0 . fragments Ċ Ċ import Ġandroid . app . DatePicker Dialog Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . Navigation Ċ import Ġcom . nil s ino ji ya . co win 2 0 . R Ċ import Ġcom . nil s ino ji ya . co win 2 0 . adapters . District s Adapter Ċ import Ġcom . nil s ino ji ya . co win 2 0 . adapters . States Adapter Ċ import Ġcom . nil s ino ji ya . co win 2 0 . databinding . Fragment Find By States Binding Ċ import Ġcom . nil s ino ji ya . co win 2 0 . helper . Api State Ċ import Ġcom . nil s ino ji ya . co win 2 0 . helper . Utility Ċ import Ġcom . nil s ino ji ya . co win 2 0 . models . District Ċ import Ġcom . nil s ino ji ya . co win 2 0 . models . State Ċ import Ġcom . nil s ino ji ya . co win 2 0 . repository s . Main Repository Ċ import Ġcom . nil s ino ji ya . co win 2 0 . services . Ret rofit Service Ċ import Ġcom . nil s ino ji ya . co win 2 0 . view Models . Main ViewModel Ċ import Ġcom . nil s ino ji ya . co win 2 0 . view Models . My ViewModel Factory Ċ import Ġkotlinx . android . synt hetic . main . fragment _ find _ by _ pin .* Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġkotlin . math . log Ċ Ċ class ĠFind By States Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġthis :: class . java . simple Name ĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Find By States Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĠĠĠ Ġprivate Ġvar Ġnav Controller : ĠNav Controller ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠMain ViewModel ĊĠĠĠ Ġprivate Ġval Ġretrofit Service Ġ= ĠRet rofit Service . getInstance () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstates Adapter : ĠStates Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdistrict s Adapter : ĠDistrict s Adapter ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġ ĠFragment Find By States Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( this , ĠMy ViewModel Factory ( Main Repository ( ret rofit Service ))). get ( Main ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġset Spinner () ĊĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch When Started Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel ._ states State Flow . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApi State . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtility . hide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtility . display Loading With Text ( activity , Ġ" Please Ġwait ...", Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApi State . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġ" Something ĠWrong , ĠPlease Ġtry Ġagain .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApi State . Success States Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtility . hide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstates Adapter Ġ= ĠStates Adapter ( require Context (), Ġit . data . states ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . spinner State . adapter Ġ= Ġstates Adapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch When Started Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel ._ district s State Flow . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApi State . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtility . hide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtility . display Loading With Text ( activity , Ġ" Please Ġwait ...", Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApi State . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġ" Something ĠWrong , ĠPlease Ġtry Ġagain .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApi State . Success District s Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtility . hide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistrict s Adapter Ġ= ĠDistrict s Adapter ( require Context (), Ġit . data . district s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . spinner District . adapter Ġ= Ġdistrict s Adapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ/* viewModel . states . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstates Adapter Ġ= ĠStates Adapter ( require Context (), Ġit . states ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . spinner State . adapter Ġ= Ġstates Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" onCreate View : Ġ${ it . states }") ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . district s . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġdistrict s Adapter Ġ= ĠDistrict s Adapter ( require Context (), Ġit . district s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . spinner District . adapter Ġ= Ġdistrict s Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" onCreate View : Ġ${ it . district s }") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtility . hide Loading () ĊĠĠĠĠĠĠĠ Ġ}) */ ĊĊĊĠĠĠĠĠĠĠ Ġbinding . spinner State . on ItemSelected Listener Ġ= Ġobject Ġ: ĠAdapter View . On ItemSelected Listener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( p 0 : ĠAdapter View < *> ?, Ġp 1 : ĠView ?, Ġposition : ĠInt , Ġp 3 : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUtility . display Loading With Text ( activity , Ġ" Please Ġwait ...", Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstate Ġ= Ġstates Adapter . getItem ( position ) Ġas ĠState ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . get District s ( state . state Id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on ItemSelected : Ġ$ position Ġ+ Ġ${ states Adapter . getItem ( position )} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( p 0 : ĠAdapter View < *> ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġbinding . tv Date . text Ġ= ĠSimpleDateFormat (" dd - MM - yyyy ", ĠLocale . US ). format ( System . currentTimeMillis ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĊĠĠĠĠĠĠĠ Ġval Ġdate Set Listener Ġ= ĠDate Picker Dialog . On Date Set Listener Ġ{ Ġview , Ġyear , Ġmonth OfYear , Ġday OfMonth Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal . set ( Calendar . YEAR , Ġyear ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal . set ( Calendar . MONTH , Ġmonth OfYear ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal . set ( Calendar . DAY _ OF _ MONTH , Ġday OfMonth ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy Format Ġ= Ġ" dd - MM - yyyy " Ġ// Ġmention Ġthe Ġformat Ġyou Ġneed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsdf Ġ= ĠSimpleDateFormat ( my Format , ĠLocale . US ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Date . text Ġ= Ġsdf . format ( cal . time ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdate Picker Dialog Ġ= Ġ ĠDate Picker Dialog ( this . require Context (), Ġdate Set Listener , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal . get ( Calendar . YEAR ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal . get ( Calendar . MONTH ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal . get ( Calendar . DAY _ OF _ MONTH )) ĊĠĠĠĠĠĠĠ Ġdate Picker Dialog . date Picker . set Min Date ( System . currentTimeMillis ()) ĊĠĠĠĠĠĠĠ Ġdate Picker Dialog . date Picker . set BackgroundColor ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( require Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . yellow _ btn )) ĊĊĠĠĠĠĠĠĠ Ġbinding . btn Change date . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Picker Dialog . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġbinding . btn Search . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Utility . check Internet ( require Context ())){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdistrict Ġ= Ġbinding . spinner District . selected Item Ġas ĠDistrict ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" onCreate View : Ġ${ district . district Id }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . putString (" FROM ", Ġ" Find By States Fragment ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . put Int (" DI STRICT ", Ġdistrict . district Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . putString (" DATE ", Ġtv Date . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller !!. navigate ( R . id . action _ findBy States Fragment _ to _ findBy Pin List Fragment , Ġbundle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġnav Controller Ġ= ĠNavigation . find Nav Controller ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Spinner (){ ĊĠĠĠĠĠĠĠ Ġif ( Utility . check Internet ( require Activity ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . get States () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . get District s (" 1 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }