package Ġsoup . animation . sample . dynamic . recycler _ view Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . recyclerview . widget . ext . Id Based Diff Callback Ċ import Ġsoup . animation . sample . R Ċ Ċ class ĠRecyclerView Adapter Ġ: ĠList Adapter < Item , ĠRecyclerView Adapter . ViewHolder >( ĊĠĠĠ ĠId Based Diff Callback Ġ{ Ġid . toString () Ġ} Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlist Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠItem ( 1 , ĠColor . RED ), ĊĠĠĠĠĠĠĠ ĠItem ( 2 , ĠColor . GREEN ), ĊĠĠĠĠĠĠĠ ĠItem ( 3 , ĠColor . BLUE ), ĊĠĠĠĠĠĠĠ ĠItem ( 4 , ĠColor . DK GRAY ), ĊĠĠĠĠĠĠĠ ĠItem ( 5 , ĠColor . MAG ENT A ), ĊĠĠĠĠĠĠĠ ĠItem ( 6 , ĠColor . YELLOW ), ĊĠĠĠĠĠĠĠ ĠItem ( 7 , ĠColor . CY AN ), ĊĠĠĠĠĠĠĠ ĠItem ( 8 , ĠColor . BLACK ), ĊĠĠĠĠĠĠĠ ĠItem ( 9 , ĠColor . LT GRAY ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġshuffle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . item _ recyclerview _ grid , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠViewHolder ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠgetItem OrNull ( position )?. run ( holder :: bind ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetItem OrNull ( position : ĠInt ): ĠItem ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent List . get OrNull ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshuffle () Ġ{ ĊĠĠĠĠĠĠĠ Ġsubmit List ( list . sh uffled ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcolor View : ĠView Ġ= Ġview . findViewById ( R . id . color View ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠItem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor View . set BackgroundColor ( item . backgroundColor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ