package Ġcom . mars . co . lift metrics . ui . exercises . create Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . mars . co . lift metrics . R Ċ import Ġcom . mars . co . lift metrics . data . model . M us cle Ċ import Ġcom . mars . co . lift metrics . data . model . M us cles Converter Ċ import Ġcom . mars . co . lift metrics . databinding . Spinner Check Item Binding Ċ Ċ data Ġclass ĠCheck able M us cle ( ĊĠĠĠ Ġvar Ġis Checked : ĠBoolean , ĊĠĠĠ Ġval Ġmus cle : ĠM us cle Ċ ) Ċ Ċ class ĠM us cle Adapter ( ĊĠĠĠ Ġparent Context : ĠContext , ĊĠĠĠ Ġresource : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġitems : ĠList < Check able M us cle >, Ċ ) Ġ: ĠArray Adapter < Check able M us cle >( parent Context , Ġresource , Ġitems ) Ġ{ ĊĊĊĠĠĠ Ġoverride Ġfun Ġget View ( position : ĠInt , ĠconvertView : ĠView ?, Ġparent : ĠViewGroup ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Custom View ( position , ĠconvertView , Ġparent ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġget DropDown View ( ĊĠĠĠĠĠĠĠ Ġposition : ĠInt , ĠconvertView : ĠView ?, ĊĠĠĠĠĠĠĠ Ġparent : ĠViewGroup ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Custom DropDown ( position , ĠconvertView , Ġparent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Custom View ( position : ĠInt , ĠconvertView : ĠView ?, Ġparent : ĠViewGroup ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= Ġget Binding ( convert View , Ġparent ) ĊĠĠĠĠĠĠĠ Ġbinding . checkbox . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġbinding . title . text Ġ= Ġcontext . getString ( R . string . select _ mus cle _ gr ups ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Custom DropDown ( ĊĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠ ĠconvertView : ĠView ?, ĊĠĠĠĠĠĠĠ Ġparent : ĠViewGroup ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= Ġget Binding ( convert View , Ġparent ) ĊĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġitems [ position ] ĊĊĠĠĠĠĠĠĠ Ġbinding . title . text Ġ= Ġcontext . getString ( M us cles Converter . toString Res ( item . mus cle )) ĊĠĠĠĠĠĠĠ Ġbinding . checkbox . isChecked Ġ= Ġitem . isChecked ĊĊĠĠĠĠĠĠĠ Ġbinding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isChecked Ġ= Ġ! item . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . checkbox . isChecked Ġ= Ġitem . isChecked ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Binding ( ĊĠĠĠĠĠĠĠ ĠconvertView : ĠView ?, ĊĠĠĠĠĠĠĠ Ġparent : ĠViewGroup ? ĊĠĠĠ Ġ): ĠSp inner Check Item Binding Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( convert View Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSp inner Check Item Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent ?. context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠSp inner Check Item Binding . bind ( convert View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Selected M us cles (): ĠSet < M us cle > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselected M us cles Ġ= Ġmutable Set Of < M us cle >() ĊĠĠĠĠĠĠĠ Ġitems . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected M us cles . add ( it . mus cle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġselected M us cles ĊĠĠĠ Ġ} Ċ }