package Ġcom . example . simp let odo Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġorg . apache . commons . io . Charsets Ċ import Ġorg . apache . commons . io . FileUtils Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ import Ġjava . nio . charset . Charset Ċ Ċ /* Ċ * ĠNotes : Ċ * ĠKotlin Ġhas Ġthis Ġweird Ġsyntax Ġfor Ġinline Ġfunctions . ĠLook Ġat Ċ * Ġset on ClickListener Ċ * Ċ * ĠThe ĠRecyclerView Ġis Ġa Ġcomponent Ġthat Ġallows Ġus Ġto Ġrender Ċ * Ġa Ġcollection Ġof Ġitems . ĠA Ġtypical ĠRecyclerView Ġcan Ġconsist Ġof : Ċ * ĠAdapter : ĠA Ġclass Ġused Ġto Ġconnect Ġour Ġdata Ġto Ġour Ġapp Ċ * ĠLayout ĠManager : ĠA Ġcomponent Ġthat Ġallows Ġus Ġto Ġlayout Ġour Ċ * Ġcontent Ġin Ġany Ġway Ġthat Ġwe Ġwant Ċ * ĠItem Animator : ĠHel ps Ġus Ġwith ĠAnim ating Ġour Ġitems Ġif Ġwe Ġmake Ġany Ċ * Ġchanges Ġto Ġour Ġdata Ġlike Ġadding Ġor Ġremoving Ġitems Ċ * Ġ*/ Ċ Ċ // ĠTODO : ĠTry Ġto Ġimplement Ġa ĠModel Ġfor ĠRecyclerView Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġvar ĠlistOf Tasks Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠ Ġlateinit Ġvar Ġadapter : ĠTask Item Adapter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġon Long ClickListener Ġ= Ġobject Ġ: ĠTask Item Adapter . On Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Long Clicked ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Tasks . remove At ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify Item Removed ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Items () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġload Items () ĊĊĠĠĠĠĠĠĠ Ġ// ĠDetect Ġwhen Ġthe Ġuser Ġclicks Ġon Ġthe Ġadd Ġbutton Ċ // ĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . button ). setOnClickListener Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" C aren ", Ġ" User Ġclicked Ġon Ġbutton ") Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠLook Ġup Ġthe Ġre cycle View Ġin Ġthe Ġlayout Ġ( id : Ġre cyclerView ) ĊĠĠĠĠĠĠĠ Ġval Ġre cyclerView = ĠfindViewById < RecyclerView >( R . id . re cyclerView ) ĊĊĠĠĠĠĠĠĠ Ġ// Create Ġadapter ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠTask Item Adapter ( listOf Tasks , on Long ClickListener ) ĊĠĠĠĠĠĠĠ Ġ// Attach Ġadapter Ġto Ġthe Ġre cyclerView ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtodo _ textField Ġ= ĠfindViewById < EditText >( R . id . add Task Field ) ĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġfunctionality Ġto Ġour Ġbutton Ġand Ġtext Ġfield ĊĠĠĠĠĠĠĠ Ġval Ġtodo _ button Ġ= ĠfindViewById < Button >( R . id . button ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Grad Ġthe Ġtext Ġfrom Ġtext Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġuser Input ted Task Ġ= Ġtodo _ textField . text . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Add Ġtext Ġto Ġour Ġarray ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Tasks . add ( user Input ted Task ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Update Ġadapter Ġto Ġreflect Ġchange ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify Item Inserted ( listOf Tasks . size Ġ- Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠClear Ġthe Ġtext Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtodo _ textField . setText ("") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Save Ġtasks ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Items () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Save Ġthe Ġdata Ġthat Ġthe Ġuser Ġhas Ġinput ted Ġby Ġreading Ġand Ġwriting Ġfrom Ġfile ĊĊĠĠĠ Ġ// Get Ġthe Ġfile Ġwe Ġneed ĊĠĠĠ Ġfun ĠgetData File (): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFile ( files Dir ," data . txt ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Load Ġthe Ġitems Ġy Ġreading Ġevery Ġlines Ġin Ġfile ĊĠĠĠ Ġfun Ġload Items (){ ĊĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Tasks Ġ= ĠFileUtils . read Lines ( getData File (), ĠCharset . default Charset ()) ĊĠĠĠĠĠĠĠ Ġ} catch ( io Exception : ĠIOException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġio Exception . printStackTrace () ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Save Ġitems Ġby Ġwriting Ġthe Ġthem Ġinto Ġour Ġdata Ġfile ĊĠĠĠ Ġfun Ġsave Items (){ ĊĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . write Lines ( getData File (), listOf Tasks ) ĊĠĠĠĠĠĠĠ Ġ} catch ( io Exception : IOException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġio Exception . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }