package Ġcom . nominal ista . exp enses . settings . presentation Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġcom . nominal ista . exp enses . R Ċ Ċ class ĠSettings Adapter Ġ: ĠList Adapter < Setting Item Model , ĠSetting Item Holder >( Diff Callback ()) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠSetting Item Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= Ġinflater . inflate ( view Type , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ SETTING _ ITEM _ TYPE Ġ-> ĠAction Setting Item Holder ( item View ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSUMMARY _ ACTION _ SETTING _ ITEM _ TYPE Ġ-> ĠSummary Action Setting Item Holder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSET T INGS _ HEADER _ TYPE Ġ-> ĠSettings Header Holder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠSetting Item Holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder Ġis ĠAction Setting Item Holder Ġ&& Ġmodel Ġis ĠAction Setting Item Model Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( model ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder Ġis ĠSummary Action Setting Item Holder Ġ&& Ġmodel Ġis ĠSummary Action Setting Item Model Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( model ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder Ġis ĠSettings Header Holder Ġ&& Ġmodel Ġis ĠSettings Header Model Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( model ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Re cyc led ( holder : ĠSetting Item Holder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Re cyc led ( holder ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction Setting Item Holder Ġ-> Ġholder . recycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSummary Action Setting Item Holder Ġ-> Ġholder . recycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSettings Header Holder Ġ-> Ġholder . recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( getItem ( position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction Setting Item Model Ġ-> ĠACTION _ SETTING _ ITEM _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSummary Action Setting Item Model Ġ-> ĠSUMMARY _ ACTION _ SETTING _ ITEM _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSettings Header Model Ġ-> ĠSET T INGS _ HEADER _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . getItem ViewType ( position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠDiff Callback Ġ: ĠDiff Util . Item Callback < Setting Item Model >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠSetting Item Model , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠSetting Item Model ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item Ġis ĠAction Setting Item Model Ġ&& Ġnew Item Ġis ĠAction Setting Item Model Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . title Ġ== Ġnew Item . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item Ġis ĠSummary Action Setting Item Model Ġ&& Ġnew Item Ġis ĠSummary Action Setting Item Model Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . title Ġ== Ġnew Item . title Ġ&& Ġold Item . summary Ġ== Ġnew Item . summary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item Ġis ĠSettings Header Model Ġ&& Ġnew Item Ġis ĠSettings Header Model Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . title Ġ== Ġnew Item . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠSetting Item Model , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠSetting Item Model ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item Ġis ĠAction Setting Item Model Ġ&& Ġnew Item Ġis ĠAction Setting Item Model Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . title Ġ== Ġnew Item . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item Ġis ĠSummary Action Setting Item Model Ġ&& Ġnew Item Ġis ĠSummary Action Setting Item Model Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . title Ġ== Ġnew Item . title Ġ&& Ġold Item . summary Ġ== Ġnew Item . summary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item Ġis ĠSettings Header Model Ġ&& Ġnew Item Ġis ĠSettings Header Model Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . title Ġ== Ġnew Item . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠACTION _ SETTING _ ITEM _ TYPE Ġ= ĠR . layout . item _ action _ setting ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSUMMARY _ ACTION _ SETTING _ ITEM _ TYPE Ġ= ĠR . layout . item _ summary _ action _ setting ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSET T INGS _ HEADER _ TYPE Ġ= ĠR . layout . header _ settings ĊĠĠĠ Ġ} Ċ }