package Ġid . a as um itro . eas yn ote . ui . main . fragment . main Ċ Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . widget . Default Item Animator Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . support . v 7 . widget . helper . Item Touch Helper Ċ import Ġandroid . view .* Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . Spinner Ċ import Ġid . a as um itro . eas yn ote . R Ċ import Ġid . a as um itro . eas yn ote . data . Global Task Ċ import Ġid . a as um itro . eas yn ote . data . local . model . Join Ċ import Ġid . a as um itro . eas yn ote . ui . detail . Detail Activity Ċ import Ġid . a as um itro . eas yn ote . ui . main . MainActivity Ċ import Ġid . a as um itro . eas yn ote . ui . main . fragment . category . Fragment Category List Ċ import Ġid . a as um itro . eas yn ote . ui . main . fragment . trash . Fragment Trash List Ċ import Ġid . a as um itro . eas yn ote . util . App Cons . DETAIL _ NOTE Ċ import Ġid . a as um itro . eas yn ote . util . App Cons . INT ENT _ DETAIL _ NOTE _ ID Ċ import Ġid . a as um itro . eas yn ote . util . App Cons . INT ENT _ DETAIL _ STATUS Ċ import Ġid . a as um itro . eas yn ote . util . App Cons . NEW _ NOTE Ċ import Ġkotlinx . android . synt hetic . main . fragment _ main _ list .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ main _ list . view .* Ċ import Ġorg . jetbrains . ank o . startActivity Ċ import Ġorg . jetbrains . ank o . toast Ċ /** Ċ Ġ* ĠCreated Ġby ĠAg us ĠAd hi ĠSum itro Ġon Ġ 1 6 / 0 2 / 2 0 1 8 . Ċ Ġ* Ġhttps :// asm ith . my . id Ċ Ġ* Ġa as um itro @ gmail . com Ċ Ġ*/ Ċ class ĠFragment Note List Ġ: ĠFragment (), ĠMain Listener , ĠRe cycler Main Listener , ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġis Fab Open : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Category Name : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm CategoryId : ĠInt ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġm Category Name Ġ= Ġ" none " ĊĠĠĠĠĠĠĠ Ġm CategoryId Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmain Activity () Ġ= Ġactivity Ġas ĠMainActivity ĊĠĠĠ Ġprivate Ġval Ġm ViewModel : ĠMain ViewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Providers . of ( activity !! ). get ( Main ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ main _ list , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġitems RecyclerView . let Ġ{ Ġinit RecyclerView ( view ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġ// EZ Note . m App Comp . inject ( this ) ĊĠĠĠĠĠĠĠ Ġmain Activity (). get Toolbar (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . title Ġ= ĠgetString ( R . string . app _ name ) Ġ+ Ġ" Ġlist " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . navigation Icon Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġfab Create . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġfab Category . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġfab Trash . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġm ViewModel . init ViewModel ( this ) ĊĠĠĠĠĠĠĠ Ġm ViewModel . get Category List () ĊĠĠĠĠĠĠĠ Ġm ViewModel . getList Task () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit RecyclerView ( view : ĠView ){ ĊĠĠĠĠĠĠĠ Ġview . items RecyclerView . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ: ĠRecyclerView . LayoutManager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġview . items RecyclerView . layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠ Ġview . items RecyclerView . item Animator Ġ= ĠDefault Item Animator () ĊĠĠĠĠĠĠĠ Ġview . items RecyclerView . add On Scroll Listener ( object Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView ?, Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dy Ġ> Ġ 0 Ġ|| Ġdy Ġ< Ġ 0 Ġ&& Ġfab . is Shown ) Ġfab . hide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scroll StateChanged ( re cyclerView : ĠRecyclerView ?, ĠnewState : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( newState Ġ== ĠRecyclerView . SCROLL _ STATE _ IDLE ) Ġfab . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Scroll StateChanged ( re cyclerView , ĠnewState ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġview . swipe Refresh Layout . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . getList Task () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit ListAdapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Adapter Ġ= ĠRe cycler Main Adapter ( m ViewModel . m Joined List , Ġthis ) ĊĠĠĠĠĠĠĠ Ġitems RecyclerView . adapter Ġ= Ġm Adapter ĊĠĠĠĠĠĠĠ Ġval Ġswipe Handler Ġ= Ġobject Ġ: ĠRe cycler Main Swipe Delete ( activity !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . remove At ( view Holder . adapter Position , Ġview !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġitem Touch Helper Ġ= ĠItem Touch Helper ( swipe Handler ) ĊĠĠĠĠĠĠĠ Ġitem Touch Helper . attach To RecyclerView ( items RecyclerView ) ĊĠĠĠĠĠĠĠ Ġ// items RecyclerView . adapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( join : ĠJoin ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity !!. startActivity < Detail Activity >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINTENT _ DETAIL _ STATUS Ġto ĠDET AIL _ NOTE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINTENT _ DETAIL _ NOTE _ ID Ġto Ġjoin . id Note . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu . clear () ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ note , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġmenu . find Item ( R . id . menu _ category ) ĊĠĠĠĠĠĠĠ Ġval Ġspinner Ġ= Ġitem . action View Ġas ĠSp inner ĊĠĠĠĠĠĠĠ Ġval Ġlist From DB Ġ= ĠGlobal Task . m Category List ĊĠĠĠĠĠĠĠ Ġval Ġlist Category Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġlist From DB . size ). map To ( list Category ) Ġ{ Ġlist From DB [ it ]. name !! Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠArray Adapter < String >( activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ spinner _ dropdown , Ġlist Category ) ĊĠĠĠĠĠĠĠ Ġ// val Ġadapter Ġ= ĠArray Adapter . createFrom Resource ( activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// R . array . category _ list , ĠR . layout . item _ spinner _ dropdown ) ĊĠĠĠĠĠĠĠ Ġadapter . set DropDown View Resource ( android . R . layout . simple _ spinner _ dropdown _ item ) ĊĠĠĠĠĠĠĠ Ġspinner . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġ// spinner . set Popup Background Resource ( R . color . white ) ĊĠĠĠĠĠĠĠ Ġspinner . on ItemSelected Listener Ġ= Ġobject Ġ: ĠAdapter View . On ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( parent : ĠAdapter View <* >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠView , Ġpos : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Category Name Ġ= Ġspinner . selected Item . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. toast ("${ spinner . selected Item }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View <* >) Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( item !!. itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . filter _ by _ title Ġ-> Ġ Ġactivity !!. toast (" title ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . filter _ by _ created Ġ-> Ġactivity !!. toast (" Created _ at ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . filter _ by _ updated Ġ-> Ġactivity !!. toast (" updated _ at ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ setting Ġ-> Ġactivity !!. toast (" This Ġis Ġsetting ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . fab Ġ-> Ġanimate FAB () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . fab Create Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate FAB () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. startActivity < Detail Activity >( INT ENT _ DETAIL _ STATUS Ġto ĠNEW _ NOTE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . fab Category Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate FAB () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Activity (). replace Fragment ( Fragment Category List ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . fab Trash Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate FAB () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Activity (). replace Fragment ( Fragment Trash List ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanimate FAB () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfab Open Ġ= ĠAnimation Utils . load Animation ( activity , ĠR . anim . fab _ open ) ĊĠĠĠĠĠĠĠ Ġval Ġfab Close Ġ= ĠAnimation Utils . load Animation ( activity , ĠR . anim . fab _ close ) ĊĠĠĠĠĠĠĠ Ġval Ġrotate Forward Ġ= ĠAnimation Utils . load Animation ( activity , R . anim . rotate _ forward ) ĊĠĠĠĠĠĠĠ Ġval Ġrotate Backward Ġ= ĠAnimation Utils . load Animation ( activity , ĠR . anim . rotate _ backward ) ĊĠĠĠĠĠĠĠ Ġval Ġin Left To Right Ġ= ĠAnimation Utils . load Animation ( activity , ĠR . anim . left _ to _ right ) ĊĠĠĠĠĠĠĠ Ġval Ġin Right To Left Ġ= ĠAnimation Utils . load Animation ( activity , ĠR . anim . right _ to _ left ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is Fab Open ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab . start Animation ( rotate Backward ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Create . start Animation ( fab Close ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Category . start Animation ( fab Close ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Trash . start Animation ( fab Close ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Create . start Animation ( in Right To Left ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Category . start Animation ( in Right To Left ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Trash . start Animation ( in Right To Left ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Create . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Category . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Trash . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Create . visibility Ġ Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Category . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Trash . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Fab Open Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab . start Animation ( rotate Forward ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Create . start Animation ( fab Open ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Category . start Animation ( fab Open ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Trash . start Animation ( fab Open ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Create . start Animation ( in Left To Right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Category . start Animation ( in Left To Right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Trash . start Animation ( in Left To Right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Create . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Category . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Trash . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Create . visibility Ġ Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Category . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Trash . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Fab Open Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }