/* Ċ Ġ* ĠĠĠ ĠCopyright Ġ[ 2 0 1 7 ] Ġ[ N IR V ANA ĠPRIVATE ĠLIMITED ] Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . zw q 6 5 . unity . ui ._ custom . recycle view Ċ Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . recyclerview . widget . St agger ed Grid LayoutManager Ċ import Ġcom . zw q 6 5 . unity . ui ._ base . adapter . Base RecyclerView Adapter Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ================================= =============== Ċ Ġ* Ġ èĩªå®ļä¹ī [ RecyclerView ][ Item Touch Helper ] æĭ ĸ æĭ ½ item çĽĳåĲ¬ Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠN IR V ANA Ġon Ġ 2 0 1 7 / 0 7 / 3 1 . Ċ Ġ* ĠContact Ġwith Ġ< zw q 6 5 1 4 0 6 4 4 1 @ gmail . com > Ċ Ġ* Ġ================================= =============== Ċ Ġ*/ Ċ class ĠMy Item Touch CallBack ( private Ġval Ġadapter : ĠBase RecyclerView Adapter < *, Ġ* >) Ġ: ĠItem Touch Helper . Callback () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Movement Flags ( re cyclerView : ĠRecyclerView , ĠviewHolder : ĠRecyclerView . ViewHolder ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdrag Flag : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġswipe Flag : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= Ġre cyclerView . layout Manager ĊĠĠĠĠĠĠĠ Ġif Ġ(( layout Manager Ġis ĠGrid LayoutManager ) Ġor Ġ( layout Manager Ġis ĠSt agger ed Grid LayoutManager )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¸Ĭä¸ĭ å·¦ åı³ æĭ ĸ æĭ ½ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrag Flag Ġ= ĠItem Touch Helper . UP Ġor ĠItem Touch Helper . DOWN Ġor ĠItem Touch Helper . LEFT Ġor ĠItem Touch Helper . RIGHT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Flag Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Linear LayoutManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrag Flag Ġ= ĠItem Touch Helper . UP Ġor ĠItem Touch Helper . DOWN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Flag Ġ= ĠItem Touch Helper . END ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmake Movement Flags ( drag Flag , Ġswipe Flag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Move ( re cyclerView : ĠRecyclerView , ĠviewHolder : ĠRecyclerView . ViewHolder , Ġtarget : ĠRecyclerView . ViewHolder ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfrom Position Ġ= ĠviewHolder . adapter Position ĊĠĠĠĠĠĠĠ Ġval Ġto Position Ġ= Ġtarget . adapter Position ĊĠĠĠĠĠĠĠ Ġif Ġ( from Position Ġ< Ġto Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġfrom Position Ġuntil Ġto Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCollections . swap ( adapter . get m DataList (), Ġi , Ġi Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġfrom Position Ġdown To Ġto Position Ġ+ Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCollections . swap ( adapter . get m DataList (), Ġi , Ġi Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter ?. notify Item Moved ( from Position , Ġto Position ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ä¾§ æ»ĳ åĪłéĻ¤ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠviewHolder . adapter Position ĊĠĠĠĠĠĠĠ Ġif Ġ( direction Ġ== ĠItem Touch Helper . END ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . get m DataList (). remove At ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify Item Removed ( position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ