package Ġcom . z in zem . sample app Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . z in zem . page d adapter . Paged Adapter Ċ import Ġcom . z in zem . page d adapter . Typed Diff Util Ċ Ċ class ĠViewHolder ( private Ġval Ġview : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠ Ġfun Ġbind ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . findViewById < TextView >( R . id . tv )?. text Ġ= Ġtext ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠAdapter ( ĊĠĠĠ Ġlifecycle Owner : ĠLifecycle Owner , Ċ ) Ġ: ĠP aged Adapter < Base ListItem , ĠViewHolder >( Typed Diff Util (), Ġlifecycle Owner ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( getItem ( position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBase ListItem . Item Ġ-> ĠR . layout . item _ text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBase ListItem . Loading Item Ġ-> ĠR . layout . item _ loading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBase ListItem . Error Item Ġ-> ĠR . layout . item _ error ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġlayout Inflater . inflate ( view Type , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġitem Ġ= ĠgetItem ( position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBase ListItem . Item Ġ-> Ġholder . bind ( item . text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Loading Item () Ġ= ĠBase ListItem . Loading Item ĊĠĠĠ Ġoverride Ġfun Ġget Error Item () Ġ= ĠBase ListItem . Error Item Ċ }