package Ġcom . ers iver . gym ific . ui . common Ċ Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . ers iver . gym ific . model . Work out Ċ import Ġtim ber . log . Tim ber Ċ Ċ private Ġconst Ġval ĠLIST _ VIEW _ TYPE Ġ= Ġ 0 Ċ private Ġconst Ġval ĠGR ID _ VIEW _ TYPE Ġ= Ġ 1 Ċ Ċ class ĠWork out Adapter ( private Ġval Ġis ListView : ĠBoolean ) Ġ: ĊĠĠĠ ĠList Adapter < Work out , ĠRecyclerView . ViewHolder >( DIFF _ CALLBACK ) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . i (" Init ĠWork outs Adapter ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( view Type Ġ== ĠLIST _ VIEW _ TYPE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠListItem ViewHolder . from ( parent ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGrid Item ViewHolder . from ( parent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwork out Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġif Ġ( holder Ġis ĠListItem ViewHolder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( holder Ġas ĠListItem ViewHolder ). bind ( work out ) ĊĠĠĠĠĠĠĠ Ġelse Ġ( holder Ġas ĠGrid Item ViewHolder ). bind ( work out ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is ListView ) ĠLIST _ VIEW _ TYPE Ġelse ĠGR ID _ VIEW _ TYPE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠDIFF _ CALLBACK : ĠDiff Util . Item Callback < Work out > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠDiff Util . Item Callback < Work out >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠWork out , Ġnew Item : ĠWork out ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . id Ġ== Ġnew Item . id ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠWork out , Ġnew Item : ĠWork out ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }