package Ġqs os . app . demo . widget Ċ Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġqs os . lib . base . base . adapter . Base Adapter Ċ import Ġjava . util . Collections . swap Ċ Ċ /** Ċ Ġ* Ġ@ author Ġ: Ġ åįİ æ¸ħ æĿ ¾ Ċ Ġ* ĠRe cycle View æĭ ĸ åĬ¨ æİĴåºı Ċ Ġ*/ Ċ class ĠItem Drag Callback < T Ġ: ĠBase Adapter < *> >( private Ġval Ġm Adapter : ĠT ) Ġ: ĠItem Touch Helper . Callback () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Movement Flags ( re cyclerView : ĠRecyclerView , ĠviewHolder : ĠRecyclerView . ViewHolder ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdrag Flags Ġ= ĠItem Touch Helper . UP Ġor ĠItem Touch Helper . DOWN Ġor ĠItem Touch Helper . LEFT Ġor ĠItem Touch Helper . RIGHT ĊĠĠĠĠĠĠĠ Ġval Ġswipe Flags Ġ= ĠItem Touch Helper . ACTION _ STATE _ IDLE ĊĠĠĠĠĠĠĠ Ġreturn Ġmake Movement Flags ( drag Flags , Ġswipe Flags ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Move ( re cyclerView : ĠRecyclerView , ĠviewHolder : ĠRecyclerView . ViewHolder , Ġtarget : ĠRecyclerView . ViewHolder ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Move ( view Holder . adapter Position , Ġtarget . adapter Position ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Item View Swipe Enabled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{} ĊĊĠĠĠ Ġ@ SuppressWarnings ĊĠĠĠ Ġfun Ġitem Move ( from Position : ĠInt , Ġto Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( from Position Ġ< Ġto Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġfrom Position Ġuntil Ġto Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswap ( m Adapter . data , Ġi , Ġi Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġfrom Position Ġdown To Ġto Position Ġ+ Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswap ( m Adapter . data , Ġi , Ġi Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Adapter . notify Item Moved ( from Position , Ġto Position ) ĊĠĠĠ Ġ} Ċ }