package Ġcom . example . s ant ander project dio . ui . fragments . list Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . St agger ed Grid LayoutManager Ċ import Ġcom . example . s ant ander project dio . R Ċ import Ġcom . example . s ant ander project dio . ui . main . view model . Task ViewModel Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġkotlinx . android . synt hetic . main . empty _ state . view .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ list . view .* ĊĊ Ċ class ĠList Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Task ViewModel : ĠTask ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ list , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠList Adapter () ĊĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= Ġview . rv ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠSt agger ed Grid LayoutManager ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSt agger ed Grid LayoutManager . VERTICAL ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġm Task ViewModel Ġ= ĠViewModel Provider ( this ). get ( Task ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġm Task ViewModel . read All Data . observe ( view Lifecycle Owner , Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . setData ( task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . rv . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . include _ empty _ state . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( task . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . include _ empty _ state . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġlisteners ( view ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlisteners ( view : ĠView ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtool l bar Ġ= Ġview . findViewById < Toolbar >( R . id . toolbar _ list ) ĊĠĠĠĠĠĠĠ Ġ( require Activity () Ġas ĠAppCompatActivity ). set Support ActionBar ( tool l bar ) ĊĊĠĠĠĠĠĠĠ Ġview . fab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . action _ list Fragment _ to _ add Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . delete _ menu , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ delete _ item Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete All () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete All () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalert Dialog Ġ= ĠMaterial AlertDialog Builder ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( getString ( R . string . list _ dialog _ title )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( getString ( R . string . list _ dialog _ message )) ĊĊĠĠĠĠĠĠĠ Ġalert Dialog . set Neutral Button ( getString ( R . string . list _ dialog _ neutral )) Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĊĠĠĠĠĠĠĠ Ġalert Dialog . set Negative Button ( getString ( R . string . list _ dialog _ negative )) Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĊĠĠĠĠĠĠĠ Ġalert Dialog . set Positive Button ( getString ( R . string . list _ dialog _ positive )) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Task ViewModel . delete All () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . list _ toast _ delete ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġalert Dialog . show () ĊĠĠĠ Ġ} Ċ }