package Ġcom . example . simp let odo Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . FileUtils Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ import Ġjava . nio . charset . Charset Ċ import Ġandroid . content . Intent ĊĊĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġvar ĠlistOf Tasks Ġ= Ġmutable ListOf < String >() ĊĠĠĠ Ġlateinit Ġvar Ġadapter : ĠTask Item Adapter ĊĠĠĠ Ġval ĠREQUEST _ CODE Ġ= Ġ 2 0 ĊĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġval Ġon Long ClickListener Ġ= Ġobject Ġ: ĠTask Item Adapter . On Long ClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Long Clicked ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Remove Ġitem Ġfrom Ġlist Ġon Ġlong Ġclick Ġand Ġupdate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Tasks . remove At ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Items () ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Begin s Ġthe ĠIntent Ġfor Ġwhen Ġa Ġlist Ġitem Ġis Ġt apped Ġon , Ġinvokes ĠEdit Task . kt ĊĠĠĠĠĠĠĠ Ġval ĠonClick Listener Ġ= Ġobject Ġ: ĠTask Item Adapter . OnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Clicked ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠIntent ( this @ MainActivity , ĠEdit Task :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi . putExtra (" task ", ĠlistOf Tasks . elementAt ( position )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi . putExtra (" position ", Ġposition ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( i , ĠREQUEST _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĊĊĊĊ Ċ // ĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . button ). setOnClickListener { Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" C aren "," user Ġclicked Ġon Ġbutton ") Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġload Items () ĊĊĠĠĠĠĠĠĠ Ġ// Lookup Ġre cyclerView Ġin Ġlayout ĊĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= ĠfindViewById < RecyclerView >( R . id . re cyclerView ) ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġadapter Ġpassing Ġin Ġthe Ġsample Ġuser Ġdata ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠTask Item Adapter ( listOf Tasks , Ġon Long ClickListener , on ClickListener Ġ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġinput TextField Ġ= ĠfindViewById < EditText >( R . id . add Task Field ) ĊĠĠĠĠĠĠĠ Ġ// Button Ġand Ġinput Ġfield Ġsetup ĊĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . button ). setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Input ted Task Ġ= ĠfindViewById < EditText >( R . id . add Task Field ). text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Input ted Task Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Tasks . add ( user Input ted Task ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify Item Inserted ( listOf Tasks . size Ġ- Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput TextField . setText ("") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Items () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Called Ġby Ġthe Ġcon clusion Ġof ĠEdit Task . kt , Ġreplaces ĠString Ġin Ġgiven Ġposition Ġin Ġlist Ġwith Ġgiven Ġstring ĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġval Ġnew Task Ġ= Ġdata ?. get Extras ()?. getString (" New Task ") ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġdata ?. get Extras ()?. getInt (" position ") ĊĊĠĠĠĠĠĠĠ ĠLog . d (" error "," new Task Ġis Ġ" Ġ+ Ġnew Task Ġ+ Ġ" Ġand Ġposition Ġis Ġ" Ġ+ Ġposition ) ĊĊĊĠĠĠĠĠĠĠ Ġif Ġ( new Task Ġ!= Ġnull Ġ&& Ġposition Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Tasks [ position !! ] Ġ= Ġnew Task ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Items () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Save Ġall Ġcurrent Ġdata Ġto Ġa Ġfile ĊĊĠĠĠ Ġ// get Ġdata Ġfile ĊĠĠĠ Ġfun ĠgetData File (): ĠFile { ĊĠĠĠĠĠĠĠ Ġreturn ĠFile ( files Dir , Ġ" data . txt ") ĊĠĠĠĠĠĠĠ Ġ// Ġin Ġdata . txt , Ġeach Ġline Ġrepresents Ġone Ġtask ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// load Ġitems Ġfrom Ġdata Ġfile ĊĠĠĠ Ġfun Ġload Items Ġ() Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Tasks Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorg . apache . commons . io . FileUtils . read Lines ( getData File (), ĠCharset . default Charset ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( io Exception : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġio Exception . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Save Ġitems Ġto Ġdata Ġfile ĊĠĠĠ Ġfun Ġsave Items Ġ(){ ĊĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorg . apache . commons . io . FileUtils . write Lines ( getData File (), ĠlistOf Tasks ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( io Exception : ĠIOException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġio Exception . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊ Ċ } Ċ