package Ġcom . ry u ichi 2 4 . new sp ocket . ui . adapters Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Image Button Ċ import Ġandroidx . recyclerview . widget . Async List Differ Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġco il . load Ċ import Ġcom . ry u ichi 2 4 . new sp ocket . R Ċ import Ġcom . ry u ichi 2 4 . new sp ocket . models . Article Ċ import Ġcom . ry u ichi 2 4 . new sp ocket . models . Article With Tag Ċ import Ġkotlinx . android . synt hetic . main . item _ news . view . iv Article Image Ċ import Ġkotlinx . android . synt hetic . main . item _ news . view . tv Description Ċ import Ġkotlinx . android . synt hetic . main . item _ news . view . tv Published At Ċ import Ġkotlinx . android . synt hetic . main . item _ news . view . tv Source Ċ import Ġkotlinx . android . synt hetic . main . item _ news . view . tv Title Ċ import Ġkotlinx . android . synt hetic . main . item _ saved _ news . view .* Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . format . DateTime Formatter Ċ Ċ class ĠSaved News Adapter (): ĠRecyclerView . Adapter < Saved News Adapter . Saved News ViewHolder >() Ġ{ ĊĊĠĠĠ Ġinner Ġclass ĠSaved News ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( saved Article With Tag : ĠArticle With Tag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġcreate Ġhelper Ġclass Ġfor Ġformatting Ġdate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsaved Article Ġ= Ġsaved Article With Tag . article ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtagName Ġ= Ġsaved Article With Tag . tagName ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparsed Date Ġ= ĠLocalDateTime . parse ( saved Article . published At , ĠDateTime Formatter . ISO _ DATE _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformatted Date Ġ= Ġparsed Date . format ( DateTime Formatter . of Pattern (" MM - dd - yyyy ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . tv Title . text Ġ= Ġsaved Article . title ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . tv Description . text Ġ= Ġsaved Article . description ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . tv Source . text Ġ= Ġsaved Article . source . name ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . tv Published At . text Ġ= Ġformatted Date ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . iv Article Image . load ( saved Article . url To Image ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . tv Tag . text Ġ= ĠtagName Ġ?: Ġ" No ĠTag " ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . btn Tag Setting . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Tag Setting ClickListener ?. let Ġ{ Ġlistener Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( saved Article , ĠitemView . btn Tag Setting ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . btn Go Add Note . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Add Note ClickListener ?. let Ġ{ Ġlistener Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( saved Article ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . btn Go Note List . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Read Note ClickListener ?. let Ġ{ Ġlistener Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( saved Article ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . cl Article . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem ClickListener ?. let Ġ{ Ġlistener Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( saved Article ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġthe Ġfunction Ġwill Ġbe Ġinjected Ġin Ġthe Ġfragment ĊĠĠĠ Ġprivate Ġvar Ġbtn Tag Setting ClickListener : Ġ(( Article , ĠImage Button ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġitem ClickListener : Ġ(( Article ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbtn Add Note ClickListener : Ġ((( Article )) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbtn Read Note ClickListener : Ġ((( Article )) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĊĠĠĠ Ġ// Ġsetup ĠDiff Util ĊĠĠĠ Ġprivate Ġval Ġdiffer Callback Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Article With Tag >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠArticle With Tag , Ġnew Item : ĠArticle With Tag ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . article . url Ġ== Ġnew Item . article . url ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠArticle With Tag , Ġnew Item : ĠArticle With Tag ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġdiffer Ġlist ĊĠĠĠ Ġval Ġdiffer Ġ= ĠAsync List Differ ( this , Ġdiffer Callback ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠSaved News ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . item _ saved _ news , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠSaved News ViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠSaved News ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarticle With Tag Ġ= Ġdiffer . current List [ position ] ĊĠĠĠĠĠĠĠ Ġholder . bind ( article With Tag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdiffer . current List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġwill Ġbe Ġused Ġin Ġthe Ġfragment ĊĠĠĠ Ġfun Ġset Btn Tag Setting ClickListener ( listener : Ġ( Article , ĠImage Button ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbtn Tag Setting ClickListener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset ItemClickListener ( listener : Ġ( Article ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem ClickListener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Btn Add Note ClickListener ( listener : Ġ( Article ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbtn Add Note ClickListener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Btn Read Note ItemClickListener ( listener : Ġ( Article ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbtn Read Note ClickListener Ġ= Ġlistener ĊĠĠĠ Ġ} Ċ }