package Ġcom . sed software . y apt alk er . presentation . feature . topic . adapter Ċ Ċ import Ġandroidx . collection . Sparse Array Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . recyclerview . widget . RecyclerView . ViewHolder Ċ import Ġandroid . view . ViewGroup Ċ 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 . base . navigation . Navigation Panel ClickListener Ċ import Ġcom . sed software . y apt alk er . presentation . base . navigation . Navigation Panel Delegate Adapter Ċ import Ġcom . sed software . y apt alk er . presentation . mapper . util . Text Transformer Ċ import Ġcom . sed software . y apt alk er . presentation . model . Displayed Item Model Ċ import Ġcom . sed software . y apt alk er . presentation . model . Displayed ItemType Ċ import Ġcom . sed software . y apt alk er . presentation . model . base . Single Post Model Ċ import Ġcom . sed software . y apt alk er . presentation . provider . Thumb nails Provider Ċ import Ġjava . util . ArrayList Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠCh osen Topic Adapter Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġtext Transformer : ĠText Transformer , ĊĠĠĠ Ġelements ClickListener : ĠCh osen Topic Elements ClickListener , ĊĠĠĠ Ġnavigation ClickListener : ĠNavigation Panel ClickListener , ĊĠĠĠ Ġthumb nails Provider : ĠThumb nails Provider , ĊĠĠĠ Ġsettings : ĠSettings Ċ ) Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġitems : ĠArrayList < Displayed Item Model > ĊĠĠĠ Ġprivate Ġvar Ġdelegate Adapters Ġ= ĠSparse Array Compat < Y ap Entity Delegate Adapter >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdelegate Adapters . put ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay ed ItemType . SINGLE _ POST , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCh osen Topic Delegate Adapter ( elements ClickListener , Ġthumb nails Provider , Ġsettings ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdelegate Adapters . put ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay ed ItemType . NAV IG ATION _ PANEL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation Panel Delegate Adapter ( navigation ClickListener ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ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 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 Post Item ( item : ĠDisplay ed Item Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinsert Position Ġ= Ġitems . size ĊĠĠĠĠĠĠĠ Ġitems . add ( item ) ĊĠĠĠĠĠĠĠ Ġnotify Item Inserted ( insert Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Posts List () Ġ{ ĊĠĠĠĠĠĠĠ Ġnotify Item Range Removed ( 0 , Ġitems . size ) ĊĠĠĠĠĠĠĠ Ġitems . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate K arma Ui ( target Post Id : ĠInt , Ġshould Increase : ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Ġ{ Ġit Ġis ĠSingle Post Model Ġ&& Ġit . post Id Ġ== Ġtarget Post Id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġpost Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Ġas ĠSingle Post Model ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġitems . indexOf ( post ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= Ġif Ġ( should Increase ) Ġ 1 Ġelse Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Rank Ġ= Ġpost . post Rank Ġ+ Ġdiff ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost . post Rank Ġ= Ġnew Rank ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost . post Rank Text Ġ= Ġtext Transformer . transform Rank To Formatted Text ( new Rank ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( should Increase ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost . post Rank Plus Clicked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost . post Rank Minus Clicked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Changed ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ