package Ġcom . pr ush . just another player . base Ċ Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . RecyclerView ĊĊ Ċ class ĠRe cycler Adapter < T >( ĊĠĠĠ Ġprivate Ġval Ġlist Presenter : ĠList Presenter < T >, ĊĠĠĠ Ġprivate Ġval Ġitem Inter acted Listener : ĠOn Item Inter acted Listener Ċ ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Base ViewHolder >(), ĠOn Item Moved Listener Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠBase ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlist Presenter . get ViewHolder ( parent . context , Ġparent , Ġview Type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlist Presenter . getItems Count () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlist Presenter . getItem ViewType ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠBase ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Position Ġ= Ġlist Presenter . getHeader Inclusive Position ( position ) ĊĊĠĠĠĠĠĠĠ Ġlist Presenter . on Bind Track Row View At Position ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item ViewType , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Position , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Inter acted Listener ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Re cyc led ( holder : ĠBase ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Re cyc led ( holder ) ĊĠĠĠĠĠĠĠ Ġlist Presenter . on View Re cyc led ( holder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Moved ( from Position : ĠInt , Ġto Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnotify Item Moved ( from Position , Ġto Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Dropped ( from Position : ĠInt , Ġto Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Presenter . on Item Moved ( from Position , Ġto Position , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠView TypeEnum Ġ{ ĊĊĠĠĠĠĠĠĠ ĠCAR O US AL _ LIST _ ITEM _ VIEW , ĊĠĠĠĠĠĠĠ ĠFL AT _ LIST _ ITEM _ VIEW , ĊĠĠĠĠĠĠĠ ĠHEADER _ LIST _ ITEM _ VIEW , ĊĠĠĠĠĠĠĠ ĠHEADER _ LIST _ ITEM _ ACTION _ VIEW ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Item Inter acted Listener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Item Click ( selected Track Position : ĠInt ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Drag Started ( view Holder : ĠRecyclerView . ViewHolder ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon ContextMenu Clicked ( position : ĠInt ) Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Car ous al ItemClickListener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Car ous al Item Click ( selected Item Position : ĠInt ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠOn Item Moved Listener Ġ{ ĊĊĠĠĠ Ġfun Ġon Item Moved ( from Position : ĠInt , Ġto Position : ĠInt ) ĊĊĠĠĠ Ġfun Ġon Item Dropped ( from Position : ĠInt , Ġto Position : ĠInt ) Ċ } Ċ Ċ class ĠItem Touch Helper Callback < T >( val Ġadapter : ĠRe cycler Adapter < T >) Ġ: ĠItem Touch Helper . Callback () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġfrom Position Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġto Position Ġ= Ġ- 1 ĊĊĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Movement Flags ( ĊĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĠviewHolder : ĠRecyclerView . ViewHolder ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmake Movement Flags ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Touch Helper . UP Ġor ĠItem Touch Helper . DOWN , ĠItem Touch Helper . LEFT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Item View Swipe Enabled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Long Press Drag Enabled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Move ( ĊĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠ Ġtarget : ĠRecyclerView . ViewHolder ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( from Position Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Position Ġ= ĠviewHolder . adapter Position ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġto Position Ġ= Ġtarget . adapter Position ĊĊĠĠĠĠĠĠĠ Ġadapter . on Item Moved ( view Holder . adapter Position , Ġto Position ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear View ( re cyclerView : ĠRecyclerView , ĠviewHolder : ĠRecyclerView . ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . clear View ( re cyclerView , ĠviewHolder ) ĊĊĠĠĠĠĠĠĠ Ġadapter . on Item Dropped ( from Position , Ġto Position ) ĊĊĠĠĠĠĠĠĠ Ġfrom Position Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġto Position Ġ= Ġ- 1 ĊĠĠĠ Ġ} Ċ Ċ }