package Ġcom . example . city search . view models Ċ Ċ import Ġandroid . util . Size Ċ Ċ /** Ċ Ġ* ĠProvides Ġa Ġcommand Ġto Ġbe Ġinvoked Ġwhen Ġa Ġcell Ġis Ġt apped Ċ Ġ*/ Ċ interface ĠCell Tap Command Ġ{ ĊĊĠĠĠ Ġfun Ġinvoke () Ċ } Ċ Ċ /** Ċ Ġ* ĠData Ġclass Ġfor Ġstate Ġof Ġa ĠRecyclerView Ġcell . Ċ Ġ* Ċ Ġ* Ġ@ param ĠViewModel ĠThe Ġtype Ġof Ġthe ĠViewModel Ġfor Ġthe Ġre cycler Ġview 's Ġcells Ċ Ġ* Ġ@ property ĠviewModel ĠThe ĠViewModel Ġfor Ġthe Ġcell Ċ Ġ* Ġ@ property Ġsize ĠThe Ġsize Ġof Ġthe Ġcell Ċ Ġ* Ġ@ property Ġtap Command ĠThe Ġcommand Ġinvoked Ġwhen Ġthe Ġcell Ġis Ġt apped Ċ Ġ*/ Ċ data Ġclass ĠCell Data < ViewModel >( ĊĠĠĠ Ġval ĠviewModel : ĠViewModel , ĊĠĠĠ Ġval Ġsize : ĠSize , ĊĠĠĠ Ġval Ġtap Command : ĠCell Tap Command ? Ċ ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn ĠviewModel . hashCode () Ġ+ Ġsize . hashCode () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġother Cell Data Ġ= Ġother Ġas ? ĠCell Data < *> Ġ?: Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn ĠviewModel Ġ== Ġother Cell Data . viewModel Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ== Ġother Cell Data . size ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠData Ġclass Ġfor Ġthe Ġpresentation Ġstate Ġof Ġa ĠRecyclerView . Ċ Ġ* Ċ Ġ* Ġ@ param ĠViewModel ĠThe Ġtype Ġof Ġthe ĠViewModel Ġfor Ġthe Ġre cycler Ġview 's Ġcells Ċ Ġ* Ġ@ property Ġcells ĠThe Ġlist Ġof Ġcells Ġto Ġdisplay Ċ Ġ* Ġ@ property Ġhor Spacing ĠThe Ġhorizontal Ġspacing Ġbetween Ġadjacent Ġcolumns Ċ Ġ* Ġ@ property Ġver Spacing ĠThe Ġvertical Ġspacing Ġbetween Ġadjacent Ġrows Ċ Ġ* Ġ@ property Ġhor Margins ĠThe Ġhorizontal Ġspacing Ġbetween Ġthe Ġfirst Ġcolumn Ġand Ġthe Ġleft Ġedge , Ġand Ġthe Ġlast Ġcolumn Ġand Ġthe Ġright Ġedge Ċ Ġ*/ Ċ data Ġclass ĠRe cycler ViewModel < ViewModel >( ĊĠĠĠ Ġval Ġcells : ĠList < Cell Data < ViewModel >>, ĊĠĠĠ Ġval Ġhor Spacing : ĠInt , ĊĠĠĠ Ġval Ġver Spacing : ĠInt , ĊĠĠĠ Ġval Ġhor Margins : ĠInt Ġ= Ġ 0 Ċ )