package Ġcom . pan os dim . money track . fragments Ċ Ċ 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 . view Models Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . pan os dim . money track . R Ċ import Ġcom . pan os dim . money track . adapters . Income Adapter Ċ import Ġcom . pan os dim . money track . dialogs . Income Dialog Ċ import Ġcom . pan os dim . money track . dialogs . Income Filter Dialog Ċ import Ġcom . pan os dim . money track . dialogs . Income Sort Dialog Ċ import Ġcom . pan os dim . money track . model . Income Ċ import Ġcom . pan os dim . money track . view model . Income ViewModel Ċ import Ġkotlinx . android . synt hetic . main . fragment _ income .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ income . view .* Ċ Ċ class ĠIn come Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġincome View : ĠView ĊĠĠĠ Ġprivate Ġval Ġincome View Adapter Ġ= ĊĠĠĠĠĠĠĠ ĠIn come Adapter ( mutable ListOf ()) Ġ{ Ġincome Item : ĠIn come Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincome Item Clicked ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġincome Item ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġincome Dialog : ĠIn come Dialog Ġ= ĠIn come Dialog () ĊĠĠĠ Ġprivate Ġval Ġincome Sort Dialog : ĠIn come Sort Dialog Ġ= ĠIn come Sort Dialog () ĊĠĠĠ Ġprivate Ġval Ġincome Filter Dialog : ĠIn come Filter Dialog Ġ= ĠIn come Filter Dialog () ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠIn come ViewModel Ġby Ġview Models ( owner Producer Ġ= Ġ{ Ġthis Ġ}) ĊĊĠĠĠ Ġprivate Ġfun Ġincome Item Clicked ( inc Item : ĠIn come ) Ġ{ ĊĠĠĠĠĠĠĠ Ġincome Dialog . show Now ( child FragmentManager , Ġ" Income Dialog ") ĊĠĠĠĠĠĠĠ Ġincome Dialog . show Form ( inc Item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . income . observe ( view Lifecycle Owner ) Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv Income . adapter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIn come Adapter ( list ) Ġ{ Ġincome Item : ĠIn come Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġincome Item Clicked ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġincome Item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( rv Income . adapter Ġas ĠIn come Adapter ). notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinc Swipe Refresh . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . refresh Income () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinc Swipe Refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġincome View Ġ= Ġinflater . inflate ( R . layout . fragment _ income , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġval Ġincome RV Ġ= Ġincome View . rv Income ĊĠĠĠĠĠĠĠ Ġincome RV . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġincome RV . layout Manager Ġ= ĠLinearLayoutManager ( income View . context ) ĊĠĠĠĠĠĠĠ Ġincome RV . adapter Ġ= Ġincome View Adapter ĊĊĠĠĠĠĠĠĠ Ġincome View . add New Income . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincome Dialog . show Now ( child FragmentManager , Ġ" Income Dialog ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincome Dialog . show Form ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġincome View . filter Income . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincome Filter Dialog . show Now ( child FragmentManager , Ġ" Income Filter Dialog ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġincome View . sort Income . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincome Sort Dialog . show Now ( child FragmentManager , Ġ" Income Sort Dialog ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġincome View ĊĠĠĠ Ġ} Ċ }