1515import android .widget .AdapterView ;
1616import android .widget .BaseAdapter ;
1717import android .widget .FrameLayout ;
18- import android .widget .HeaderViewListAdapter ;
1918import android .widget .ListAdapter ;
2019
2120import java .util .ArrayList ;
@@ -36,6 +35,8 @@ public class SwipeLayout extends FrameLayout {
3635 private Map <View , ArrayList <OnRevealListener >> mRevealListeners = new HashMap <View , ArrayList <OnRevealListener >>();
3736 private Map <View , Boolean > mShowEntirely = new HashMap <View , Boolean >();
3837
38+ private boolean mSwipeEnabled = true ;
39+
3940 public static enum DragEdge {
4041 Left ,
4142 Right ,
@@ -638,6 +639,15 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
638639
639640 @ Override
640641 public boolean onInterceptTouchEvent (MotionEvent ev ) {
642+
643+ if (!isEnabled () || !isEnabledInAdapterView ()){
644+ return true ;
645+ }
646+
647+ if (!isSwipeEnabled ()){
648+ return false ;
649+ }
650+
641651 for (SwipeDenier denier : mSwipeDeniers ) {
642652 if (denier != null && denier .shouldDenySwipe (ev )) {
643653 return false ;
@@ -716,10 +726,12 @@ private boolean childNeedHandleTouchEvent(View v, MotionEvent event){
716726 private float sX = -1 , sY = -1 ;
717727 @ Override
718728 public boolean onTouchEvent (MotionEvent event ) {
719-
720- if (!isEnabledInAdapterView ())
729+ if (!isEnabledInAdapterView () || !isEnabled ())
721730 return true ;
722731
732+ if (!isSwipeEnabled ())
733+ return super .onTouchEvent (event );
734+
723735 int action = event .getActionMasked ();
724736 ViewParent parent = getParent ();
725737
@@ -735,6 +747,7 @@ public boolean onTouchEvent(MotionEvent event) {
735747 case MotionEvent .ACTION_DOWN :
736748 mDragHelper .processTouchEvent (event );
737749 parent .requestDisallowInterceptTouchEvent (true );
750+
738751 sX = event .getRawX ();
739752 sY = event .getRawY ();
740753
@@ -839,17 +852,23 @@ private boolean isEnabledInAdapterView(){
839852 if (adapter != null ){
840853 int p = adapterView .getPositionForView (SwipeLayout .this );
841854 if (adapter instanceof BaseAdapter ){
842- enable & = ((BaseAdapter ) adapter ).isEnabled (p );
855+ enable = ((BaseAdapter ) adapter ).isEnabled (p );
843856 }else if (adapter instanceof ListAdapter ){
844- enable &= ((ListAdapter ) adapter ).isEnabled (p );
845- }else if (adapter instanceof HeaderViewListAdapter ){
846- enable &= ((HeaderViewListAdapter ) adapter ).isEnabled (p );
857+ enable = ((ListAdapter ) adapter ).isEnabled (p );
847858 }
848859 }
849860 }
850861 return enable ;
851862 }
852863
864+ public void setSwipeEnabled (boolean enabled ){
865+ mSwipeEnabled = enabled ;
866+ }
867+
868+ public boolean isSwipeEnabled (){
869+ return mSwipeEnabled ;
870+ }
871+
853872 private boolean insideAdapterView (){
854873 return getAdapterView () != null ;
855874 }
0 commit comments