package Ġcom . bad oo . ri bs . example . photo _ feed . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġco il . api . load Ċ import Ġcom . bad oo . ri bs . example . R ĊĊ Ċ abstract Ġclass ĠPhoto ListItem ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ċ Ċ internal Ġclass ĠPhoto ViewHolder ( private Ġval Ġphoto View : ĠAs pect Ratio ImageView ) Ġ: ĊĠĠĠ ĠPhoto ListItem ViewHolder ( photo View ) Ġ{ ĊĊĠĠĠ Ġfun Ġbind ( item : ĠPhoto ListItem . Photo Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto View . set AspectRatio ( photo . width , Ġphoto . height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto View . load ( photo . url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ed ( photo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( context : ĠContext ) Ġ= ĠPhoto ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAs pect Ratio ImageView ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠRecyclerView . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠNext Page Loading ViewHolder ( item View : ĠView ) Ġ: ĠPhoto ListItem ViewHolder ( item View ) Ġ{ ĊĊĊĠĠĠ Ġfun Ġbind () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( context : ĠContext , Ġparent : ĠViewGroup ) Ġ= ĠNext Page Loading ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ photo _ feed _ next _ page _ loading , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠNext Page Loading Error ViewHolder ( item View : ĠView ) Ġ: ĊĠĠĠ ĠPhoto ListItem ViewHolder ( item View ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġretry Ġ= ĠitemView . findViewById < ImageView >( R . id . photo Feed _ retry ) ĊĊĠĠĠ Ġfun Ġbind ( item : ĠPhoto ListItem . Next Page Loading Error Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġretry . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . on Clicked () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( context : ĠContext , Ġparent : ĠViewGroup ) Ġ= ĠNext Page Loading Error ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ photo _ feed _ next _ page _ loading _ error , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ