package Ġcom . sed software . y apt alk er . presentation . feature . forums list . adapter Ċ Ċ import Ġandroidx . collection . Sparse Array Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . recyclerview . widget . RecyclerView . ViewHolder Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġcom . sed software . y apt alk er . R Ċ import Ġcom . sed software . y apt alk er . domain . device . Settings Ċ import Ġcom . sed software . y apt alk er . presentation . base . adapter . Y ap Entity Delegate Adapter Ċ import Ġcom . sed software . y apt alk er . presentation . model . Displayed ItemType Ċ import Ġcom . sed software . y apt alk er . presentation . model . base . Forum Model Ċ import Ġjava . util . ArrayList Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠFor ums Adapter Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġitem ClickListener : ĠFor ums ItemClickListener , ĊĠĠĠ Ġsettings : ĠSettings Ċ ) Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġitems : ĠArrayList < Forum Model > ĊĠĠĠ Ġprivate Ġvar Ġdelegate Adapters Ġ= ĠSparse Array Compat < Y ap Entity Delegate Adapter >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdelegate Adapters . put ( Displayed ItemType . FOR UM , ĠFor ums Delegate Adapter ( item ClickListener , Ġsettings )) ĊĊĠĠĠĠĠĠĠ Ġitems Ġ= ĠArrayList () ĊĊĠĠĠĠĠĠĠ Ġset Has Stable Ids ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ= ĊĠĠĠĠĠĠĠ Ġdelegate Adapters . get ( view Type ) !!. onCreate ViewHolder ( parent ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdelegate Adapters . get ( getItem ViewType ( position )) ?. on Bind ViewHolder ( holder , Ġitems [ position ]) ĊĊĠĠĠĠĠĠĠ Ġwith ( holder . item View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnimation Utils . load Animation ( context , ĠR . anim . recyclerview _ fade _ in ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Animation ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( holder : ĠViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Detached From Window ( holder ) ĊĠĠĠĠĠĠĠ Ġholder . item View . clear Animation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġitems [ position ]. get EntityType () ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= ĊĠĠĠĠĠĠĠ Ġitems . size ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ Ġposition . to Long () ĊĊĠĠĠ Ġfun Ġadd For ums ListItem ( item : ĠFor um Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinsert Position Ġ= Ġitems . size ĊĠĠĠĠĠĠĠ Ġitems . add ( item ) ĊĠĠĠĠĠĠĠ Ġnotify Item Inserted ( insert Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear For ums List () Ġ{ ĊĠĠĠĠĠĠĠ Ġnotify Item Range Removed ( 0 , Ġitems . size ) ĊĠĠĠĠĠĠĠ Ġitems . clear () ĊĠĠĠ Ġ} Ċ } Ċ