package Ġcom . crease . list li ker ec y cl er view . touch Ċ Ċ import Ġandroid . support . annotation . Call Super Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . support . v 7 . widget . helper . Item Touch Helper Ċ import Ġcom . crease . list li ker ec y cl er view . view . List Like RecyclerView Ċ Ċ /** Ċ Ġ* Ġ[ List Like RecyclerView ] çļĦ [ Item Touch Helper . Callback ] Ċ Ġ* Ċ Ġ* Ġ ä¿®æŃ£ çĶ± [ List Like RecyclerView . header View List ] å¼ķ èµ· çļĦ ä½įç½® åģı å·® Ċ Ġ* Ġ èĭ¥ éĩĩçĶ¨ [ RecyclerView . ViewHolder . get Adapter Position ] éľĢè¦ģ æīĭåĬ¨ ä¿®æŃ£ ä½įç½® Ċ Ġ* Ġ( åĩı åİ» [ List Like RecyclerView . head View Size ]) Ċ Ġ* Ċ Ġ* Ġå¦Ĥæŀľ éľĢè¦ģ èĩªå®ļä¹ī ä¾§ æ»ĳ åĪłéĻ¤ æł·å¼ı ï¼Į éĩį åĨĻ [ Item Touch Callback . is Item View Swipe Enabled ] ä¸º false Ċ Ġ* Ġ å¹¶ åľ¨ [ Item Touch Callback . on Child Draw ] ä¸Ń åĪ¤æĸŃ action State ä¸º [ Item Touch Helper . ACTION _ STATE _ SW I PE ] æĹ¶ çĶ± item å¤ĦçĲĨ æ»ĳ åĬ¨ äºĭä»¶ Ċ Ġ* Ċ Ġ* Ġ@ author ĠCre ase Ċ Ġ* Ġ@ version Ġ 1 . 0 Ċ Ġ*/ Ċ abstract Ġclass ĠItem Touch Callback Ġ: ĠItem Touch Helper . Callback () Ġ{ ĊĊĠĠĠ Ġvar Ġdrag Flag : ĠInt Ġ= ĠItem Touch Helper . UP Ġor ĠItem Touch Helper . DOWN ĊĠĠĠ Ġvar Ġswipe Flag : ĠInt Ġ= ĠItem Touch Helper . RIGHT Ġor ĠItem Touch Helper . LEFT ĊĠĠĠ Ġinternal Ġvar Ġcallback : ĠRe cycler ItemSelected Change Callback ? Ġ= Ġnull ĊĊĠĠĠ Ġabstract Ġfun Ġon Item Can Move ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget ViewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Position : ĠInt ĊĠĠĠ Ġ): ĠBoolean ĊĊĠĠĠ Ġabstract Ġfun Ġon Item Moved ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget ViewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Position : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy : ĠInt ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġabstract Ġfun Ġon Item Sw ip ed ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection : ĠInt ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġis Long Press Drag Enabled () Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġget Movement Flags ( re cyclerView : ĠRecyclerView , ĠviewHolder : ĠRecyclerView . ViewHolder ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( re cyclerView Ġis ĠList Like RecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠviewHolder . adapter Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhead View Size Ġ= Ġre cyclerView . head View Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Size Ġ= Ġre cyclerView . adapter ?. item Count Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġin Ġhead View Size Ġuntil Ġ( head View Size Ġ+ Ġcontent Size )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmake Movement Flags ( drag Flag , Ġswipe Flag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmake Movement Flags ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmake Movement Flags ( drag Flag , Ġswipe Flag ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Move ( re cyclerView : ĠRecyclerView , ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠRecyclerView . ViewHolder ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( re cyclerView Ġis ĠList Like RecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhead View Size Ġ= Ġre cyclerView . head View Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠviewHolder . adapter Position Ġ- Ġhead View Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Position Ġ= Ġtarget . adapter Position Ġ- Ġhead View Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Size Ġ= Ġre cyclerView . adapter ?. item Count Ġ?: Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġin Ġ 0 Ġuntil Ġcontent Size Ġ&& Ġtarget Position Ġin Ġ 0 Ġuntil Ġcontent Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Can Move ( re cyclerView , ĠviewHolder , Ġposition , Ġtarget , Ġtarget Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Can Move ( re cyclerView , ĠviewHolder , ĠviewHolder . adapter Position , Ġtarget , Ġtarget . adapter Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Moved ( re cyclerView : ĠRecyclerView , ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Pos : ĠInt , Ġtarget : ĠRecyclerView . ViewHolder , Ġto Pos : ĠInt , Ġx : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Moved ( re cyclerView , ĠviewHolder , Ġfrom Pos , Ġtarget , Ġto Pos , Ġx , Ġy ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( re cyclerView Ġis ĠList Like RecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhead View Size Ġ= Ġre cyclerView . head View Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠviewHolder . adapter Position Ġ- Ġhead View Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Position Ġ= Ġtarget . adapter Position Ġ- Ġhead View Size ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Moved ( re cyclerView , ĠviewHolder , Ġposition , Ġtarget , Ġtarget Position , Ġx , Ġy ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Moved ( re cyclerView , ĠviewHolder , ĠviewHolder . adapter Position , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget , Ġtarget . adapter Position , Ġx , Ġy ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback ?. on Sw ip ed ( view Holder , Ġdirection ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Selected Changed ( view Holder : ĠRecyclerView . ViewHolder ?, Ġaction State : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Selected Changed ( view Holder , Ġaction State ) ĊĊĠĠĠĠĠĠĠ Ġcallback ?. on Selected Changed ( view Holder , Ġaction State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠRe cycler ItemSelected Change Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Selected Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction State : ĠInt ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Sw ip ed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirection : ĠInt ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }