package Ġscheduler . org . challenge tracker . ui . view Challenge Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġkotlinx . android . synt hetic . main . fragment _ view _ challenge . view . challenge _ list Ċ import Ġkotlinx . android . synt hetic . main . fragment _ view _ challenge . view . no _ challenges Ċ import Ġscheduler . org . challenge tracker . R Ċ import Ġscheduler . org . challenge tracker . entity . Challenge Ċ import Ġscheduler . org . challenge tracker . ui . add Challenge . Edit Challenge Fragment Ċ import Ġscheduler . org . challenge tracker . ui . challenge Details . Challenge Details Fragment Ċ import Ġscheduler . org . challenge tracker . view model . Challenge ViewModel Ċ Ċ class ĠView Ch allenges Fragment Ġ: ĠFragment (), ĠView Challenge Notifier Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġchallenges ViewModel : ĠChallenge ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠView Challenge Adapter ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Challenge ( challenge : ĠChallenge , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( context !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . delete ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( R . string . confirmation _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . ok ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchallenges ViewModel . delete Challenge ( challenge ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . delete Success ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. set Negative Button ( R . string . cancel ) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġedit Challenge ( challenge : ĠChallenge ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġbundle . put Parcelable (" challenge ", Ġchallenge ) ĊĠĠĠĠĠĠĠ Ġreplace Fragment ( Edit Challenge Fragment (), Ġbundle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Challenge ( challenge : ĠChallenge ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchallenges ViewModel . update Challenge ( challenge ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( challenge : ĠChallenge ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġbundle . put Parcelable (" challenge ", Ġchallenge ) ĊĠĠĠĠĠĠĠ Ġreplace Fragment ( Challenge Details Fragment (), Ġbundle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġchallenges ViewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Providers . of ( this ). get ( Challenge ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġinflater . inflate ( R . layout . fragment _ view _ challenge , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= Ġroot . challenge _ list ĊĠĠĠĠĠĠĠ Ġchallenges ViewModel . challenges . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġordered Ch allenges Ġ= Ġchallenges ViewModel . get Ordered Ch allenges ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle Visibility ( root . no _ challenges , Ġroot . challenge _ list , Ġordered Ch allenges . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠView Challenge Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġordered Ch allenges Ġas ĠMutable List < Challenge >? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġmutable ListOf (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġreturn Ġroot ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreplace Fragment ( fragment : ĠFragment , Ġbundle : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Manager ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġbundle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . nav _ host _ fragment , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtoggle Visibility ( ĊĠĠĠĠĠĠĠ Ġno Notes : ĠView , ĊĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠ ĠisEmpty : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġno Notes . visibility Ġ= Ġif Ġ( isEmpty ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġre cyclerView . visibility Ġ= Ġif Ġ( isEmpty ) ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠView Challenge Notifier Ġ{ ĊĠĠĠ Ġfun Ġdelete Challenge ( challenge : ĠChallenge , Ġposition : ĠInt ) ĊĊĠĠĠ Ġfun Ġedit Challenge ( challenge : ĠChallenge ) ĊĊĠĠĠ Ġfun Ġupdate Challenge ( challenge : ĠChallenge ) ĊĊĠĠĠ Ġfun Ġon ItemSelected ( challenge : ĠChallenge ) Ċ } Ċ