package Ġcom . cert ified . notes . adapters Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . cert ified . notes . R Ċ import Ġcom . cert ified . notes . model . Book Mark Ċ import Ġcom . like . Like Button Ċ Ċ class ĠBook Mark Recycler Adapter ( Ċ // ĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , Ċ // ĠĠĠ Ġprivate Ġval ĠviewModel : ĠNotes ViewModel Ċ ) Ġ: ĊĠĠĠ ĠList Adapter < Book Mark , ĠBook Mark Recycler Adapter . ViewHolder >( ĊĠĠĠĠĠĠĠ ĠDIFF _ CALLBACK ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlistener : ĠOn Book Mark Clicked Listener Ċ Ċ // ĠĠĠ Ġinit Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġlistener Ġ= Ġnull Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Book Mark Clicked Listener ( listener : ĠOn Book Mark Clicked Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Book Mark At ( position : ĠInt ): ĠBook Mark Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetItem ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Book Mark Clicked Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Book Mark Click ( bookmark : ĠBook Mark ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnote Content : ĠTextView ĊĠĠĠĠĠĠĠ Ġval Ġnote Title : ĠTextView ĊĠĠĠĠĠĠĠ Ġval Ġlike Button : ĠLike Button ĊĠĠĠĠĠĠĠ Ġval Ġiv Book Mark : ĠImageView ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnote Content Ġ= ĠitemView . findViewById ( R . id . tv _ note _ content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnote Title Ġ= ĠitemView . findViewById ( R . id . tv _ note _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlike Button Ġ= ĠitemView . findViewById ( R . id . like Button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv Book Mark Ġ= ĠitemView . findViewById ( R . id . iv _ bookmark ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġadapter Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ!= ĠRecyclerView . NO _ POSITION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Book Mark Click ( getItem ( position )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDIFF _ CALLBACK : ĠDiff Util . Item Callback < Book Mark > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠDiff Util . Item Callback < Book Mark >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠBook Mark , Ġnew Item : ĠBook Mark ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠBook Mark , Ġnew Item : ĠBook Mark ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( old Item . note Id Ġ== Ġnew Item . note Id Ġ|| Ġold Item . note Content Ġ== Ġnew Item . note Content Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . course Code Ġ== Ġnew Item . course Code Ġ|| Ġold Item . note Title Ġ== Ġnew Item . note Title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . list _ item _ notes , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( item View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Book Mark Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġholder . note Content . text Ġ= Ġcurrent Book Mark . note Content ĊĠĠĠĠĠĠĠ Ġholder . note Title . text Ġ= Ġcurrent Book Mark . note Title ĊĠĠĠĠĠĠĠ Ġholder . iv Book Mark . visibility Ġ= ĠView . VISIBLE Ċ // ĠĠĠĠĠĠĠ Ġholder . like Button . is Lik ed Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠ Ġholder . like Button . setOn Like Listener ( object Ġ: ĠOn Like Listener Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlik ed ( like Button : ĠLike Button ?) Ġ{ Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġun Lik ed ( like Button : ĠLike Button ?) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote Id Ġ= Ġcurrent Book Mark . note Id Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcourse Code Ġ= Ġcurrent Book Mark . course Code Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote Title Ġ= Ġcurrent Book Mark . note Title Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote Content Ġ= Ġcurrent Book Mark . note Content Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbook Mark Ġ= ĠBook Mark ( note Id , Ġcourse Code , Ġnote Title , Ġnote Content ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbook Mark . id Ġ= Ġcurrent Book Mark . id Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . delete Book Mark ( book Mark ) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpreferences Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġpreferences . edit () Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdef Values Ġ= ĠHashSet < String >() Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdef Values . add ("- 1 ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote Ids Ġ= Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHashSet < String >( preferences . getString Set ( Preference Keys . NOTE _ IDS , Ġdef Values )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote Ids . remove ( note Id . toString ()) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString Set ( Preference Keys . NOTE _ IDS , Ġnote Ids ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }