package Ġcom . mars . co . lift metrics . ui . exercises Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . mars . co . lift metrics . R Ċ import Ġcom . mars . co . lift metrics . data . model . Exercise Ċ import Ġcom . mars . co . lift metrics . databinding . Exercise Detail Dialog Binding Ċ import Ġcom . mars . co . lift metrics . databinding . Fragment Ex ercises Item Binding Ċ import Ġcom . mars . co . lift metrics . util ty . Dialog Util Ċ import Ġcom . mars . co . lift metrics . util ty . Exercise Formatter ĊĊ Ċ class ĠEx ercises RecyclerView Adapter ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġexercises : ĠList < Exercise > Ċ ) Ġ: ĠRecyclerView . Adapter < Ex ercises RecyclerView Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġvalues : ĠList < Exercise Details > Ġ= Ġexercises . map Ġ{ ĊĠĠĠĠĠĠĠ ĠExercise Details ( exercise Ġ= Ġit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Data ( exercises : ĠList < Exercise >) Ġ{ ĊĠĠĠĠĠĠĠ Ġvalues Ġ= Ġexercises . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠExercise Details ( exercise Ġ= Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFragment Ex ercises Item Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġvalues [ position ] ĊĠĠĠĠĠĠĠ Ġval Ġexercise Formatter Ġ= ĠExercise Formatter ( item . exercise , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġholder . exercise More . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . show Ġ= Ġ! item . show ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Details ( holder , Ġitem . show ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexercise Formatter . insert Graphic ( holder . image Example ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġholder . exercise Name . text Ġ= Ġexercise Formatter . name ĊĠĠĠĠĠĠĠ Ġholder . exercise Description . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Util Ġ= ĠDialog Util ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Util . show Exercise Details Dialog ( exercise Formatter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhandle Details ( holder , Ġitem . show ) ĊĠĠĠĠĠĠĠ Ġexercise Formatter . insert Graphic ( holder . image Example ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Details ( ĊĠĠĠĠĠĠĠ Ġholder : ĠViewHolder , ĊĠĠĠĠĠĠĠ Ġshow : ĠBoolean , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . details Layout . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( R . drawable . ic _ keyboard _ arrow _ up _ black _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( holder . show Details ) ĊĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . details Layout . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( R . drawable . ic _ keyboard _ arrow _ down _ black _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( holder . show Details ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clear ( holder . image Example ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġvalues . size ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġposition ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠExercise Details ( ĊĠĠĠĠĠĠĠ Ġval Ġexercise : ĠExercise , ĊĠĠĠĠĠĠĠ Ġvar Ġshow : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( binding : ĠFragment Ex ercises Item Binding ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexercise Name Ġ= Ġbinding . exercise Name ĊĠĠĠĠĠĠĠ Ġval Ġexercise Description Ġ= Ġbinding . exercise Description ĊĠĠĠĠĠĠĠ Ġval Ġshow Details Ġ= Ġbinding . show Details ĊĠĠĠĠĠĠĠ Ġval Ġdetails Layout Ġ= Ġbinding . exercise Details ĊĠĠĠĠĠĠĠ Ġval Ġimage Example Ġ= Ġbinding . exercise Example ĊĠĠĠĠĠĠĠ Ġval Ġexercise More Ġ= Ġbinding . exercise More ĊĊĠĠĠ Ġ} Ċ Ċ }