package Ġcom . example . sh inel on . li an q in Ċ Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . opengl . Visibility Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Persist able Bundle Ċ import Ġandroid . os . V ibr ator Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ 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 . util . Log Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . Animation Ċ import Ġandroid . widget . TextView Ċ import Ġcom . example . sh inel on . li an q in . helper . Data Base Ċ import Ġcom . example . sh inel on . li an q in . helper . Item Touch Callback Ċ import Ġcom . example . sh inel on . li an q in . model . All Note Infos Ċ import Ġcom . example . sh inel on . li an q in . model . Note Infos Ċ import Ġcom . example . sh inel on . li an q in . presenter . Note Presenter Ċ import Ġcom . example . sh inel on . li an q in . view . Note View Ċ import Ġkotlinx . android . synt hetic . main . activity _ note _ list .* Ċ import Ġkotlinx . android . synt hetic . main . list view _ notes . view .* Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠSh inel on Ġon Ġ 2 0 1 8 / 2 / 6 . Ċ Ġ*/ Ċ class ĠNote Activity : ĠAppCompatActivity (), Note View Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¸į è¦ģ åľ¨ æŀĦéĢł æĸ¹æ³ķ éĩĮéĿ¢ è°ĥçĶ¨ getActivity (), getApplication () çŃī æĸ¹æ³ķ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġapp : ĠMy Application ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġpresenter : ĠNote Presenter ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġlist Ġ= Ġmutable ListOf < Note Infos >() ĊĠĠĠ Ġvar Ġadapter : ĠNote Adapter ? Ġ= Ġnull ĊĊĠĠĠ Ġinterface ĠActionListener { ĊĠĠĠĠĠĠĠ Ġfun Ġsw ip Action ( position : ĠInt ) ĊĠĠĠĠĠĠĠ Ġfun Ġdrag Action ( start : ĠInt , target : ĠInt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ note _ list ) ĊĠĠĠĠĠĠĠ Ġapp Ġ= Ġapplication Ġas ĠMy Application ĊĠĠĠĠĠĠĠ Ġpresenter Ġ= ĠNote Presenter ( app !!. db ) ĊĠĠĠĠĠĠĠ ĠLog . e (" application "," $ app ") ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( activity _ list _ toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġupdate View () ĊĠĠĠĠĠĠĠ Ġre cycler _ note . item Animator Ġ= ĠDefault Item Animator () ĊĠĠĠĠĠĠĠ Ġval Ġitem Helper Ġ= ĠItem Touch Helper ( Item Touch Callback ( adapter )) ĊĠĠĠĠĠĠĠ Ġitem Helper . attach To RecyclerView ( recycler _ note ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate View (){ ĊĠĠĠĠĠĠĠ ĠLog . e (" update View "," æĪĲåĬŁ ") ĊĠĠĠĠĠĠĠ Ġif ( list . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter !!. query Item ( Data Base . table , null , null , null , null , null , null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ= ĠAll Note Infos . list ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( adapter == null ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠNote Adapter ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler _ note . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler _ note . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter !!. notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinit Recycler ( list ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġupdate View () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġinit Recycler ( list : ĠMutable List < Note Infos > ){ ĊĠĠĠĠĠĠĠ Ġif Ġ(! list . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext _ list _ note _ tips . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext _ list _ note _ tips . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠNote ViewHolder ( v : ĠView ): ĠRecyclerView . ViewHolder ( v ){ ĊĠĠĠĠĠĠĠ Ġval Ġtext Content Ġ= Ġv . text _ list _ note ĊĠĠĠĠĠĠĠ Ġval Ġtext Date Ġ= Ġv . text _ notes _ date ĊĠĠĠĠĠĠĠ Ġvar Ġuuid Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġindex : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" ä¸»éĶ® åĴĮ ç´¢å¼ķ "," ${ uuid } åĴĮ ${ index }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Note Details ( index , uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . setOn Long ClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvi br ator Ġ= Ġget System Service ( Context . V IB R ATOR _ SERVICE ) Ġas ĠV ibr ator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvi br ator . vi br ate ( 3 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart Note Details ( index : ĠInt , uuid : ĠString ){ ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠIntent ( this , Note Details Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġi . putExtra (" new Item ", false ) ĊĠĠĠĠĠĠĠ Ġi . putExtra (" index ", index ) ĊĠĠĠĠĠĠĠ Ġi . putExtra (" uuid ", uuid ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( i ) ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( android . R . anim . fade _ in , android . R . anim . fade _ out ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠNote Adapter ( list Note : ĠMutable List < Note Infos >): ĠRecyclerView . Adapter < Note ViewHolder >(), ActionListener { ĊĠĠĠĠĠĠĠ Ġvar Ġlist Notes Ġ= Ġlist Note ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup ?, Ġview Type : ĠInt ): ĠNote ViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġlayout Inflater . inflate ( R . layout . list view _ notes , parent , false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠNote ViewHolder ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠNote ViewHolder ?, Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĢĴ åºı æŁ¥çľĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder ?. textContent ?. text Ġ= Ġlist Notes [( list Notes . size - 1 )- position ]. text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder ?. text Date ?. text Ġ= Ġlist Notes [( list Notes . size - 1 )- position ]. date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder ?. uuid Ġ= Ġlist Notes [( list Notes . size - 1 )- position ]. uuid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder ?. index Ġ= Ġ( list Notes . size - 1 )- position ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w (" uuid ", list Notes [( list Notes . size - 1 )- position ]. uuid ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġlist Notes . size ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdrag Action ( start : ĠInt , Ġtarget : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp 0 Ġ= Ġlist Notes [ start ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp 1 Ġ= Ġlist Notes [ target ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv 0 Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 0 . put (" content ", p 1 . text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 0 . put (" time ", p 1 . date ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv 1 Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 . put (" content ", p 0 . text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 . put (" time ", p 0 . date ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠCollections . swap ( list Notes , start , target ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Moved ( start , target ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter !!. update Item ( Data Base . table , v 0 ," id = ?", ĠarrayOf ( p 0 . uuid )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter !!. update Item ( Data Base . table , v 1 ," id = ?", ĠarrayOf ( p 1 . uuid )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsw ip Action ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= Ġlist Notes [ position ]. uuid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Notes . remove At ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Removed ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter !!. delete Item ( Data Base . table ," id = ?", ĠarrayOf ( uuid )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . activity _ note _ add , menu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( item ?. itemId ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ note Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠIntent ( this , Note Details Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi . putExtra (" new Item ", true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Pending Transition ( android . R . anim . fade _ in , android . R . anim . fade _ out ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġpresenter !!. clear View () ĊĠĠĠ Ġ} Ċ }