package Ġde . raph ae le b ner . room database backup . sample . database . table . fruit Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġde . raph ae le b ner . room database backup . sample . R Ċ Ċ /** Ċ Ġ* Ġ ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* Ġ ĠCopyright Ġ( c ) Ġ 2 0 2 2 ĠR aph ael ĠE b ner Ċ Ġ* Ċ Ġ* Ġ ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġ Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġ Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġ Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġ Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġ Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* Ġ ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġ Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* Ġ ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* Ġ ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* Ġ ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* Ġ ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* Ġ ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* Ġ ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* Ġ ĠSOFTWARE . Ċ Ġ*/ Ċ class ĠF ruit ListAdapter ( private Ġval Ġitem ClickListener : ĠOn ItemClickListener ) Ġ: ĊĠĠĠ ĠList Adapter < F ruit , ĠF ruit ListAdapter . F ruit ViewHolder >( Task Diff Callback ()) Ġ{ ĊĊĊĠĠĠ Ġ/* --------------------- creates Ġthe ĠViewHolder Ġ( returns Ġthe Ġview Ġwith Ġall Ġitems Ġin Ġit ) ---------------- ---------- */ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠF ruit ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠF ruit ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . content _ fruit _ list , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* --------------------- Bind Ġthe Ġdata Ġwith Ġthe ĠView ---------------- ---------- */ ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠF ruit ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( getItem ( position ), Ġitem ClickListener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* --------------------- Transform ĠF ruit Ġinfos Ġto Ġposition Ġnumber ---------------- ---------- */ ĊĠĠĠ Ġfun Ġget F ruit At ( position : ĠInt ): ĠF ruit ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetItem ( position ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/* --------------------- Creates Ġan ĠonClick Listener Ġ( when Ġyou Ġpress Ġon Ġa Ġitem , Ġyou Ġget Ġthe ĠID , Ġand Ġcan Ġdo Ġwhat Ġever Ġyou Ġwant ---------------- ---------- */ ĊĠĠĠ Ġinterface ĠOn ItemClickListener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Item Clicked ( fruit : ĠF ruit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* --------------------- get Ġthe Ġitem Ġfrom Ġthe Ġon Bind ViewHolder , Ġand Ġapply Ġit Ġto Ġthe Ġcurrent Ġview Ġrow ---------------- ---------- */ ĊĠĠĠ Ġinner Ġclass ĠF ruit ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠF ruit , Ġitem click Listener : ĠOn ItemClickListener ) Ġ= Ġwith ( item View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Bind Ġthe Ġdata Ġwith ĠView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv F ruit Name : ĠTextView Ġ= ĠitemView . findViewById ( R . id . tv _ fruit _ name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv F ruit Name . text Ġ= Ġitem . name ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem click Listener . on Item Clicked ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ /* --------------------- M akes Ġthe ĠAnimation Ġto Ġthe Ġre cycler view , Ġwhen Ġitem Ġis Ġchanged , Ġadded Ġor Ġdeleted ---------------- ---------- */ Ċ class ĠTask Diff Callback Ġ: ĠDiff Util . Item Callback < F ruit >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠF ruit , Ġnew Item : ĠF ruit ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠF ruit , Ġnew Item : ĠF ruit ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Compare Ġall Ġitems , Ġso Ġif Ġthere Ġis Ġa Ġnew Ġfield , Ġadd Ġit Ġwith Ġ&& ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item . name Ġ== Ġnew Item . name ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ