package Ġpiece . of . lazy . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . util . Sparse Array Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġz p dl Ċ Ġ*/ Ċ Ċ abstract Ġclass ĠPiece Of Adapter ( private Ġval Ġcontext : ĠContext ) Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĠĠĠ Ġprivate Ġval Ġinflater : ĠLayoutInflater Ġ= Ġcontext . getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠ Ġprivate Ġval Ġholder Interfaces : ĠSparse Array < Piece Of Holder < *, * >> Ġ= ĠSparse Array () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . set Has Stable Ids ( true ) ĊĠĠĠĠĠĠĠ Ġthis . on Bind Adapter Interface ( holder Interfaces ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġon Bind Adapter Interface ( list : ĠMutable List < Piece Of Holder < *, * >>) ĊĊĠĠĠ Ġabstract Ġfun Ġget Bind Item ( position : ĠInt ): ĠAny ? ĊĊĠĠĠ Ġprivate Ġfun Ġon Bind Adapter Interface ( list : ĠSparse Array < Piece Of Holder < *, * >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbind Holder Ġ= Ġmutable ListOf < Piece Of Holder < *, * >>() ĊĠĠĠĠĠĠĠ Ġon Bind Adapter Interface ( bind Holder ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( holder Ġin Ġbind Holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . put ( holder . getView Type (), Ġholder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ= Ġposition . to Long () ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġget Bind Item ( position ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ( 0 Ġuntil Ġholder Interfaces . size ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġholder Interfaces . value At ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġit . is Bind Item ( item ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . getView Type () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . getItem ViewType ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup ?, Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġholder Interface : ĠPiece Of Holder < *, *> ? Ġ= Ġholder Interfaces . get ( view Type ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( holder Interface Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder Interface . onCreate ViewHolder ( in flater , Ġparent ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Ġ= ĠTextView ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠViewGroup . LayoutParams ( ViewGroup . LayoutParams . MATCH _ PARENT , ĠViewGroup . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . CENTER ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( Color . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Text Size ( Typed Value . COMPLEX _ UNIT _ DIP , Ġ 2 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Padding ( 2 0 , Ġ 2 0 , Ġ 2 0 , Ġ 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset BackgroundColor ( Color . DK GRAY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠRecyclerView . ViewHolder ( tv ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder ?, Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġget Bind Item ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder Interface : ĠPiece Of Holder < *, *> ? Ġ= Ġholder Interfaces . get ( it . item ViewType ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder Interface Ġ!= Ġnull Ġ-> Ġitem ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder Interface . on Bind ViewHolder ( context , Ġholder , Ġitem , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View Ġis ĠTextView Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( holder . item View Ġas ĠTextView ). text Ġ= ĠString . format (" ERROR Ġ: Ġposition Ġ: Ġ% d ", Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }