package Ġcom . ite o . android _ navigation . list Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Diff Util . Item Callback Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView . ViewHolder Ċ import Ġcom . ite o . android _ navigation . R Ċ import Ġkotlinx . android . synt hetic . main . item . view . text Ċ Ċ class ĠItem Adapter ( private Ġval Ġclick Listener : Ġ( Item ) Ġ-> ĠUnit ) Ġ: ĠList Adapter < Item , ĠItem ViewHolder >( ĊĠĠĠ Ġobject : ĠItem Callback < Item >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠItem , Ġnew Item : ĠItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠItem , Ġnew Item : ĠItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠItem ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġreturn ĠItem ViewHolder ( in flater . inflate ( R . layout . item , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠItem ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( getItem ( position ), Ġclick Listener ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠItem ViewHolder ( view : ĠView ) Ġ: ĠViewHolder ( view ) Ġ{ ĊĊĠĠĠ Ġfun Ġbind ( item : ĠItem , Ġclick Listener : Ġ( Item ) Ġ-> ĠUnit ) Ġ= Ġwith ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext . text Ġ= Ġitem . name ĊĠĠĠĠĠĠĠ Ġset BackgroundColor ( item . color ) ĊĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ Ġclick Listener ( item ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ