From 9a0bb05a5cd0efec758d8880c4e18785685719ec Mon Sep 17 00:00:00 2001 From: Mike Cumings Date: Thu, 30 Apr 2015 12:48:32 -0700 Subject: [PATCH 1/3] Swipe manager code does not need knowledge of the adapter implementation so remove it. --- .../swipe/adapters/ArraySwipeAdapter.java | 6 ++- .../swipe/adapters/BaseSwipeAdapter.java | 6 ++- .../swipe/adapters/CursorSwipeAdapter.java | 6 ++- .../swipe/adapters/RecyclerSwipeAdapter.java | 5 ++ .../implments/SwipeItemAdapterMangerImpl.java | 19 ++----- .../swipe/implments/SwipeItemMangerImpl.java | 50 ++++--------------- .../SwipeItemRecyclerMangerImpl.java | 19 ++----- .../interfaces/SwipeAdapterInterface.java | 6 ++- .../interfaces/SwipeItemMangerInterface.java | 21 ++++---- 9 files changed, 51 insertions(+), 87 deletions(-) diff --git a/library/src/main/java/com/daimajia/swipe/adapters/ArraySwipeAdapter.java b/library/src/main/java/com/daimajia/swipe/adapters/ArraySwipeAdapter.java index 3912e724..41ce385d 100644 --- a/library/src/main/java/com/daimajia/swipe/adapters/ArraySwipeAdapter.java +++ b/library/src/main/java/com/daimajia/swipe/adapters/ArraySwipeAdapter.java @@ -7,7 +7,6 @@ import com.daimajia.swipe.SwipeLayout; import com.daimajia.swipe.implments.SwipeItemAdapterMangerImpl; -import com.daimajia.swipe.implments.SwipeItemMangerImpl; import com.daimajia.swipe.interfaces.SwipeAdapterInterface; import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; import com.daimajia.swipe.util.Attributes; @@ -42,6 +41,11 @@ public ArraySwipeAdapter(Context context, int resource, int textViewResourceId, super(context, resource, textViewResourceId, objects); } + @Override + public void notifyDatasetChanged() { + super.notifyDataSetChanged(); + } + @Override public View getView(int position, View convertView, ViewGroup parent) { boolean convertViewIsNull = convertView == null; diff --git a/library/src/main/java/com/daimajia/swipe/adapters/BaseSwipeAdapter.java b/library/src/main/java/com/daimajia/swipe/adapters/BaseSwipeAdapter.java index b7fb1aeb..b51531d2 100644 --- a/library/src/main/java/com/daimajia/swipe/adapters/BaseSwipeAdapter.java +++ b/library/src/main/java/com/daimajia/swipe/adapters/BaseSwipeAdapter.java @@ -7,7 +7,6 @@ import com.daimajia.swipe.SwipeLayout; import com.daimajia.swipe.implments.SwipeItemAdapterMangerImpl; import com.daimajia.swipe.interfaces.SwipeAdapterInterface; -import com.daimajia.swipe.implments.SwipeItemMangerImpl; import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; import com.daimajia.swipe.util.Attributes; @@ -42,6 +41,11 @@ public abstract class BaseSwipeAdapter extends BaseAdapter implements SwipeItemM */ public abstract void fillValues(int position, View convertView); + @Override + public void notifyDatasetChanged() { + super.notifyDataSetChanged(); + } + @Override public final View getView(int position, View convertView, ViewGroup parent) { diff --git a/library/src/main/java/com/daimajia/swipe/adapters/CursorSwipeAdapter.java b/library/src/main/java/com/daimajia/swipe/adapters/CursorSwipeAdapter.java index 0bde0e8c..7427fba8 100644 --- a/library/src/main/java/com/daimajia/swipe/adapters/CursorSwipeAdapter.java +++ b/library/src/main/java/com/daimajia/swipe/adapters/CursorSwipeAdapter.java @@ -9,7 +9,6 @@ import com.daimajia.swipe.SwipeLayout; import com.daimajia.swipe.implments.SwipeItemAdapterMangerImpl; import com.daimajia.swipe.interfaces.SwipeAdapterInterface; -import com.daimajia.swipe.implments.SwipeItemMangerImpl; import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; import com.daimajia.swipe.util.Attributes; @@ -54,6 +53,11 @@ public void closeAllExcept(SwipeLayout layout) { mItemManger.closeAllExcept(layout); } + @Override + public void closeAllItems() { + mItemManger.closeAllItems(); + } + @Override public List getOpenItems() { return mItemManger.getOpenItems(); diff --git a/library/src/main/java/com/daimajia/swipe/adapters/RecyclerSwipeAdapter.java b/library/src/main/java/com/daimajia/swipe/adapters/RecyclerSwipeAdapter.java index e68de7f9..28613784 100644 --- a/library/src/main/java/com/daimajia/swipe/adapters/RecyclerSwipeAdapter.java +++ b/library/src/main/java/com/daimajia/swipe/adapters/RecyclerSwipeAdapter.java @@ -21,6 +21,11 @@ public abstract class RecyclerSwipeAdapter e @Override public abstract void onBindViewHolder(VH viewHolder, final int position); + @Override + public void notifyDatasetChanged() { + super.notifyDataSetChanged(); + } + @Override public void openItem(int position) { mItemManger.openItem(position); diff --git a/library/src/main/java/com/daimajia/swipe/implments/SwipeItemAdapterMangerImpl.java b/library/src/main/java/com/daimajia/swipe/implments/SwipeItemAdapterMangerImpl.java index de3a570f..270af04c 100644 --- a/library/src/main/java/com/daimajia/swipe/implments/SwipeItemAdapterMangerImpl.java +++ b/library/src/main/java/com/daimajia/swipe/implments/SwipeItemAdapterMangerImpl.java @@ -1,30 +1,17 @@ package com.daimajia.swipe.implments; import android.view.View; -import android.widget.BaseAdapter; -import com.daimajia.swipe.SimpleSwipeListener; import com.daimajia.swipe.SwipeLayout; import com.daimajia.swipe.interfaces.SwipeAdapterInterface; -import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; -import com.daimajia.swipe.util.Attributes; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; /** * SwipeItemMangerImpl is a helper class to help all the adapters to maintain open status. */ -public class SwipeItemAdapterMangerImpl extends SwipeItemMangerImpl{ - - protected BaseAdapter mAdapter; +public class SwipeItemAdapterMangerImpl extends SwipeItemMangerImpl { - public SwipeItemAdapterMangerImpl(BaseAdapter adapter) { - super(adapter); - this.mAdapter = adapter; + public SwipeItemAdapterMangerImpl(SwipeAdapterInterface swipeAdapterInterface) { + super(swipeAdapterInterface); } @Override diff --git a/library/src/main/java/com/daimajia/swipe/implments/SwipeItemMangerImpl.java b/library/src/main/java/com/daimajia/swipe/implments/SwipeItemMangerImpl.java index e4a330e5..c3c4714a 100644 --- a/library/src/main/java/com/daimajia/swipe/implments/SwipeItemMangerImpl.java +++ b/library/src/main/java/com/daimajia/swipe/implments/SwipeItemMangerImpl.java @@ -1,8 +1,6 @@ package com.daimajia.swipe.implments; -import android.support.v7.widget.RecyclerView; import android.view.View; -import android.widget.BaseAdapter; import com.daimajia.swipe.SimpleSwipeListener; import com.daimajia.swipe.SwipeLayout; @@ -11,7 +9,7 @@ import com.daimajia.swipe.util.Attributes; import java.util.ArrayList; -import java.util.Arrays; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -29,27 +27,13 @@ public abstract class SwipeItemMangerImpl implements SwipeItemMangerInterface { protected Set mOpenPositions = new HashSet(); protected Set mShownLayouts = new HashSet(); - protected BaseAdapter mBaseAdapter; - protected RecyclerView.Adapter mRecyclerAdapter; + protected SwipeAdapterInterface swipeAdapterInterface; - public SwipeItemMangerImpl(BaseAdapter adapter) { - if (adapter == null) - throw new IllegalArgumentException("Adapter can not be null"); + public SwipeItemMangerImpl(SwipeAdapterInterface swipeAdapterInterface) { + if (swipeAdapterInterface == null) + throw new IllegalArgumentException("SwipeAdapterInterface can not be null"); - if (!(adapter instanceof SwipeItemMangerInterface)) - throw new IllegalArgumentException("adapter should implement the SwipeAdapterInterface"); - - this.mBaseAdapter = adapter; - } - - public SwipeItemMangerImpl(RecyclerView.Adapter adapter) { - if (adapter == null) - throw new IllegalArgumentException("Adapter can not be null"); - - if (!(adapter instanceof SwipeItemMangerInterface)) - throw new IllegalArgumentException("adapter should implement the SwipeAdapterInterface"); - - this.mRecyclerAdapter = adapter; + this.swipeAdapterInterface = swipeAdapterInterface; } public Attributes.Mode getMode() { @@ -72,13 +56,7 @@ public void setMode(Attributes.Mode mode) { public abstract void bindView(View target, int position); public int getSwipeLayoutId(int position) { - if (mBaseAdapter != null) { - return ((SwipeAdapterInterface) (mBaseAdapter)).getSwipeLayoutResourceId(position); - } else if (mRecyclerAdapter != null) { - return ((SwipeAdapterInterface) (mRecyclerAdapter)).getSwipeLayoutResourceId(position); - } else { - return -1; - } + return swipeAdapterInterface.getSwipeLayoutResourceId(position); } @Override @@ -89,11 +67,7 @@ public void openItem(int position) { } else { mOpenPosition = position; } - if (mBaseAdapter != null) { - mBaseAdapter.notifyDataSetChanged(); - } else if (mRecyclerAdapter != null) { - mRecyclerAdapter.notifyDataSetChanged(); - } + swipeAdapterInterface.notifyDatasetChanged(); } @Override @@ -104,11 +78,7 @@ public void closeItem(int position) { if (mOpenPosition == position) mOpenPosition = INVALID_POSITION; } - if (mBaseAdapter != null) { - mBaseAdapter.notifyDataSetChanged(); - } else if (mRecyclerAdapter != null) { - mRecyclerAdapter.notifyDataSetChanged(); - } + swipeAdapterInterface.notifyDatasetChanged(); } @Override @@ -141,7 +111,7 @@ public List getOpenItems() { if (mode == Attributes.Mode.Multiple) { return new ArrayList(mOpenPositions); } else { - return Arrays.asList(mOpenPosition); + return Collections.singletonList(mOpenPosition); } } diff --git a/library/src/main/java/com/daimajia/swipe/implments/SwipeItemRecyclerMangerImpl.java b/library/src/main/java/com/daimajia/swipe/implments/SwipeItemRecyclerMangerImpl.java index 97cd7257..abbcd28e 100644 --- a/library/src/main/java/com/daimajia/swipe/implments/SwipeItemRecyclerMangerImpl.java +++ b/library/src/main/java/com/daimajia/swipe/implments/SwipeItemRecyclerMangerImpl.java @@ -1,30 +1,17 @@ package com.daimajia.swipe.implments; -import android.support.v7.widget.RecyclerView; import android.view.View; -import com.daimajia.swipe.SimpleSwipeListener; import com.daimajia.swipe.SwipeLayout; import com.daimajia.swipe.interfaces.SwipeAdapterInterface; -import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; -import com.daimajia.swipe.util.Attributes; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; /** * SwipeItemRecyclerMangerImpl is a helper class to help the RecyclerView to maintain open status. */ -public class SwipeItemRecyclerMangerImpl extends SwipeItemMangerImpl{ - - protected RecyclerView.Adapter mAdapter; +public class SwipeItemRecyclerMangerImpl extends SwipeItemMangerImpl { - public SwipeItemRecyclerMangerImpl(RecyclerView.Adapter adapter) { - super(adapter); - this.mAdapter = adapter; + public SwipeItemRecyclerMangerImpl(SwipeAdapterInterface swipeAdapterInterface) { + super(swipeAdapterInterface); } @Override diff --git a/library/src/main/java/com/daimajia/swipe/interfaces/SwipeAdapterInterface.java b/library/src/main/java/com/daimajia/swipe/interfaces/SwipeAdapterInterface.java index 4b47fa20..9d0a7701 100644 --- a/library/src/main/java/com/daimajia/swipe/interfaces/SwipeAdapterInterface.java +++ b/library/src/main/java/com/daimajia/swipe/interfaces/SwipeAdapterInterface.java @@ -1,5 +1,9 @@ package com.daimajia.swipe.interfaces; public interface SwipeAdapterInterface { - public int getSwipeLayoutResourceId(int position); + + int getSwipeLayoutResourceId(int position); + + void notifyDatasetChanged(); + } diff --git a/library/src/main/java/com/daimajia/swipe/interfaces/SwipeItemMangerInterface.java b/library/src/main/java/com/daimajia/swipe/interfaces/SwipeItemMangerInterface.java index b03f4a38..b9dd337b 100644 --- a/library/src/main/java/com/daimajia/swipe/interfaces/SwipeItemMangerInterface.java +++ b/library/src/main/java/com/daimajia/swipe/interfaces/SwipeItemMangerInterface.java @@ -1,30 +1,29 @@ package com.daimajia.swipe.interfaces; import com.daimajia.swipe.SwipeLayout; -import com.daimajia.swipe.implments.SwipeItemMangerImpl; import com.daimajia.swipe.util.Attributes; import java.util.List; public interface SwipeItemMangerInterface { - public void openItem(int position); + void openItem(int position); - public void closeItem(int position); + void closeItem(int position); - public void closeAllExcept(SwipeLayout layout); + void closeAllExcept(SwipeLayout layout); - public void closeAllItems(); + void closeAllItems(); - public List getOpenItems(); + List getOpenItems(); - public List getOpenLayouts(); + List getOpenLayouts(); - public void removeShownLayouts(SwipeLayout layout); + void removeShownLayouts(SwipeLayout layout); - public boolean isOpen(int position); + boolean isOpen(int position); - public Attributes.Mode getMode(); + Attributes.Mode getMode(); - public void setMode(Attributes.Mode mode); + void setMode(Attributes.Mode mode); } From e82cf4b21a2c77b22b127818febc63b7ffd5f321 Mon Sep 17 00:00:00 2001 From: Mike Cumings Date: Thu, 30 Apr 2015 13:31:26 -0700 Subject: [PATCH 2/3] Remove redundant operations from SwipeItemManagerImpl and consolidate into the base class. --- .../adapter/RecyclerViewAdapter.java | 3 +- .../swipe/adapters/ArraySwipeAdapter.java | 13 ++--- .../swipe/adapters/BaseSwipeAdapter.java | 8 ++- .../swipe/adapters/CursorSwipeAdapter.java | 11 ++-- .../swipe/adapters/RecyclerSwipeAdapter.java | 4 +- .../adapters/SimpleCursorSwipeAdapter.java | 10 +--- .../implments/SwipeItemAdapterMangerImpl.java | 53 ------------------- .../swipe/implments/SwipeItemMangerImpl.java | 31 +++++++---- .../SwipeItemRecyclerMangerImpl.java | 50 ----------------- 9 files changed, 35 insertions(+), 148 deletions(-) delete mode 100644 library/src/main/java/com/daimajia/swipe/implments/SwipeItemAdapterMangerImpl.java delete mode 100644 library/src/main/java/com/daimajia/swipe/implments/SwipeItemRecyclerMangerImpl.java diff --git a/demo/src/main/java/com/daimajia/swipedemo/adapter/RecyclerViewAdapter.java b/demo/src/main/java/com/daimajia/swipedemo/adapter/RecyclerViewAdapter.java index 206733bc..3b4c34d4 100644 --- a/demo/src/main/java/com/daimajia/swipedemo/adapter/RecyclerViewAdapter.java +++ b/demo/src/main/java/com/daimajia/swipedemo/adapter/RecyclerViewAdapter.java @@ -15,7 +15,6 @@ import com.daimajia.swipe.SimpleSwipeListener; import com.daimajia.swipe.SwipeLayout; import com.daimajia.swipe.adapters.RecyclerSwipeAdapter; -import com.daimajia.swipe.implments.SwipeItemRecyclerMangerImpl; import com.daimajia.swipedemo.R; import java.util.ArrayList; @@ -90,7 +89,7 @@ public void onClick(View view) { }); viewHolder.textViewPos.setText((position + 1) + "."); viewHolder.textViewData.setText(item); - mItemManger.bindView(viewHolder.itemView, position); + mItemManger.bind(viewHolder.itemView, position); } @Override diff --git a/library/src/main/java/com/daimajia/swipe/adapters/ArraySwipeAdapter.java b/library/src/main/java/com/daimajia/swipe/adapters/ArraySwipeAdapter.java index 41ce385d..9475ff59 100644 --- a/library/src/main/java/com/daimajia/swipe/adapters/ArraySwipeAdapter.java +++ b/library/src/main/java/com/daimajia/swipe/adapters/ArraySwipeAdapter.java @@ -6,16 +6,16 @@ import android.widget.ArrayAdapter; import com.daimajia.swipe.SwipeLayout; -import com.daimajia.swipe.implments.SwipeItemAdapterMangerImpl; +import com.daimajia.swipe.implments.SwipeItemMangerImpl; import com.daimajia.swipe.interfaces.SwipeAdapterInterface; import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; import com.daimajia.swipe.util.Attributes; import java.util.List; -public abstract class ArraySwipeAdapter extends ArrayAdapter implements SwipeItemMangerInterface,SwipeAdapterInterface { +public abstract class ArraySwipeAdapter extends ArrayAdapter implements SwipeItemMangerInterface, SwipeAdapterInterface { - private SwipeItemAdapterMangerImpl mItemManger = new SwipeItemAdapterMangerImpl(this); + private SwipeItemMangerImpl mItemManger = new SwipeItemMangerImpl(this); {} public ArraySwipeAdapter(Context context, int resource) { super(context, resource); @@ -48,13 +48,8 @@ public void notifyDatasetChanged() { @Override public View getView(int position, View convertView, ViewGroup parent) { - boolean convertViewIsNull = convertView == null; View v = super.getView(position, convertView, parent); - if(convertViewIsNull){ - mItemManger.initialize(v, position); - }else{ - mItemManger.updateConvertView(v, position); - } + mItemManger.bind(v, position); return v; } diff --git a/library/src/main/java/com/daimajia/swipe/adapters/BaseSwipeAdapter.java b/library/src/main/java/com/daimajia/swipe/adapters/BaseSwipeAdapter.java index b51531d2..bf72c9a9 100644 --- a/library/src/main/java/com/daimajia/swipe/adapters/BaseSwipeAdapter.java +++ b/library/src/main/java/com/daimajia/swipe/adapters/BaseSwipeAdapter.java @@ -5,7 +5,7 @@ import android.widget.BaseAdapter; import com.daimajia.swipe.SwipeLayout; -import com.daimajia.swipe.implments.SwipeItemAdapterMangerImpl; +import com.daimajia.swipe.implments.SwipeItemMangerImpl; import com.daimajia.swipe.interfaces.SwipeAdapterInterface; import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; import com.daimajia.swipe.util.Attributes; @@ -14,7 +14,7 @@ public abstract class BaseSwipeAdapter extends BaseAdapter implements SwipeItemMangerInterface, SwipeAdapterInterface { - protected SwipeItemAdapterMangerImpl mItemManger = new SwipeItemAdapterMangerImpl(this); + protected SwipeItemMangerImpl mItemManger = new SwipeItemMangerImpl(this); /** * return the {@link com.daimajia.swipe.SwipeLayout} resource id, int the view item. @@ -52,10 +52,8 @@ public final View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if(v == null){ v = generateView(position, parent); - mItemManger.initialize(v, position); - }else{ - mItemManger.updateConvertView(v, position); } + mItemManger.bind(v, position); fillValues(position, v); return v; } diff --git a/library/src/main/java/com/daimajia/swipe/adapters/CursorSwipeAdapter.java b/library/src/main/java/com/daimajia/swipe/adapters/CursorSwipeAdapter.java index 7427fba8..3e6a62c7 100644 --- a/library/src/main/java/com/daimajia/swipe/adapters/CursorSwipeAdapter.java +++ b/library/src/main/java/com/daimajia/swipe/adapters/CursorSwipeAdapter.java @@ -7,7 +7,7 @@ import android.view.ViewGroup; import com.daimajia.swipe.SwipeLayout; -import com.daimajia.swipe.implments.SwipeItemAdapterMangerImpl; +import com.daimajia.swipe.implments.SwipeItemMangerImpl; import com.daimajia.swipe.interfaces.SwipeAdapterInterface; import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; import com.daimajia.swipe.util.Attributes; @@ -16,7 +16,7 @@ public abstract class CursorSwipeAdapter extends CursorAdapter implements SwipeItemMangerInterface, SwipeAdapterInterface { - private SwipeItemAdapterMangerImpl mItemManger = new SwipeItemAdapterMangerImpl(this); + private SwipeItemMangerImpl mItemManger = new SwipeItemMangerImpl(this); protected CursorSwipeAdapter(Context context, Cursor c, boolean autoRequery) { super(context, c, autoRequery); @@ -28,13 +28,8 @@ protected CursorSwipeAdapter(Context context, Cursor c, int flags) { @Override public View getView(int position, View convertView, ViewGroup parent) { - boolean convertViewIsNull = convertView == null; View v = super.getView(position, convertView, parent); - if(convertViewIsNull){ - mItemManger.initialize(v, position); - }else{ - mItemManger.updateConvertView(v, position); - } + mItemManger.bind(v, position); return v; } diff --git a/library/src/main/java/com/daimajia/swipe/adapters/RecyclerSwipeAdapter.java b/library/src/main/java/com/daimajia/swipe/adapters/RecyclerSwipeAdapter.java index 28613784..f6e9aed3 100644 --- a/library/src/main/java/com/daimajia/swipe/adapters/RecyclerSwipeAdapter.java +++ b/library/src/main/java/com/daimajia/swipe/adapters/RecyclerSwipeAdapter.java @@ -4,7 +4,7 @@ import android.view.ViewGroup; import com.daimajia.swipe.SwipeLayout; -import com.daimajia.swipe.implments.SwipeItemRecyclerMangerImpl; +import com.daimajia.swipe.implments.SwipeItemMangerImpl; import com.daimajia.swipe.interfaces.SwipeAdapterInterface; import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; import com.daimajia.swipe.util.Attributes; @@ -13,7 +13,7 @@ public abstract class RecyclerSwipeAdapter extends RecyclerView.Adapter implements SwipeItemMangerInterface, SwipeAdapterInterface { - public SwipeItemRecyclerMangerImpl mItemManger = new SwipeItemRecyclerMangerImpl(this); + public SwipeItemMangerImpl mItemManger = new SwipeItemMangerImpl(this); @Override public abstract VH onCreateViewHolder(ViewGroup parent, int viewType); diff --git a/library/src/main/java/com/daimajia/swipe/adapters/SimpleCursorSwipeAdapter.java b/library/src/main/java/com/daimajia/swipe/adapters/SimpleCursorSwipeAdapter.java index 75fbe0c7..19b04ad2 100644 --- a/library/src/main/java/com/daimajia/swipe/adapters/SimpleCursorSwipeAdapter.java +++ b/library/src/main/java/com/daimajia/swipe/adapters/SimpleCursorSwipeAdapter.java @@ -7,7 +7,6 @@ import android.view.ViewGroup; import com.daimajia.swipe.SwipeLayout; -import com.daimajia.swipe.implments.SwipeItemAdapterMangerImpl; import com.daimajia.swipe.implments.SwipeItemMangerImpl; import com.daimajia.swipe.interfaces.SwipeAdapterInterface; import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; @@ -17,7 +16,7 @@ public abstract class SimpleCursorSwipeAdapter extends SimpleCursorAdapter implements SwipeItemMangerInterface, SwipeAdapterInterface { - private SwipeItemAdapterMangerImpl mItemManger = new SwipeItemAdapterMangerImpl(this); + private SwipeItemMangerImpl mItemManger = new SwipeItemMangerImpl(this); protected SimpleCursorSwipeAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) { super(context, layout, c, from, to, flags); @@ -29,13 +28,8 @@ protected SimpleCursorSwipeAdapter(Context context, int layout, Cursor c, String @Override public View getView(int position, View convertView, ViewGroup parent) { - boolean convertViewIsNull = convertView == null; View v = super.getView(position, convertView, parent); - if(convertViewIsNull){ - mItemManger.initialize(v, position); - }else{ - mItemManger.updateConvertView(v, position); - } + mItemManger.bind(v, position); return v; } diff --git a/library/src/main/java/com/daimajia/swipe/implments/SwipeItemAdapterMangerImpl.java b/library/src/main/java/com/daimajia/swipe/implments/SwipeItemAdapterMangerImpl.java deleted file mode 100644 index 270af04c..00000000 --- a/library/src/main/java/com/daimajia/swipe/implments/SwipeItemAdapterMangerImpl.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.daimajia.swipe.implments; - -import android.view.View; - -import com.daimajia.swipe.SwipeLayout; -import com.daimajia.swipe.interfaces.SwipeAdapterInterface; - -/** - * SwipeItemMangerImpl is a helper class to help all the adapters to maintain open status. - */ -public class SwipeItemAdapterMangerImpl extends SwipeItemMangerImpl { - - public SwipeItemAdapterMangerImpl(SwipeAdapterInterface swipeAdapterInterface) { - super(swipeAdapterInterface); - } - - @Override - public void initialize(View target, int position) { - int resId = getSwipeLayoutId(position); - - OnLayoutListener onLayoutListener = new OnLayoutListener(position); - SwipeLayout swipeLayout = (SwipeLayout) target.findViewById(resId); - if (swipeLayout == null) - throw new IllegalStateException("can not find SwipeLayout in target view"); - - SwipeMemory swipeMemory = new SwipeMemory(position); - swipeLayout.addSwipeListener(swipeMemory); - swipeLayout.addOnLayoutListener(onLayoutListener); - swipeLayout.setTag(resId, new ValueBox(position, swipeMemory, onLayoutListener)); - - mShownLayouts.add(swipeLayout); - } - - @Override - public void updateConvertView(View target, int position) { - int resId = getSwipeLayoutId(position); - - SwipeLayout swipeLayout = (SwipeLayout) target.findViewById(resId); - if (swipeLayout == null) - throw new IllegalStateException("can not find SwipeLayout in target view"); - - ValueBox valueBox = (ValueBox) swipeLayout.getTag(resId); - valueBox.swipeMemory.setPosition(position); - valueBox.onLayoutListener.setPosition(position); - valueBox.position = position; - } - - @Override - public void bindView(View target, int position){ - - } - -} diff --git a/library/src/main/java/com/daimajia/swipe/implments/SwipeItemMangerImpl.java b/library/src/main/java/com/daimajia/swipe/implments/SwipeItemMangerImpl.java index c3c4714a..989849c1 100644 --- a/library/src/main/java/com/daimajia/swipe/implments/SwipeItemMangerImpl.java +++ b/library/src/main/java/com/daimajia/swipe/implments/SwipeItemMangerImpl.java @@ -17,7 +17,7 @@ /** * SwipeItemMangerImpl is a helper class to help all the adapters to maintain open status. */ -public abstract class SwipeItemMangerImpl implements SwipeItemMangerInterface { +public class SwipeItemMangerImpl implements SwipeItemMangerInterface { private Attributes.Mode mode = Attributes.Mode.Single; public final int INVALID_POSITION = -1; @@ -47,16 +47,25 @@ public void setMode(Attributes.Mode mode) { mOpenPosition = INVALID_POSITION; } - /* initialize and updateConvertView used for AdapterManagerImpl */ - public abstract void initialize(View target, int position); - - public abstract void updateConvertView(View target, int position); - - /* bindView used for RecyclerViewManagerImpl */ - public abstract void bindView(View target, int position); - - public int getSwipeLayoutId(int position) { - return swipeAdapterInterface.getSwipeLayoutResourceId(position); + public void bind(View view, int position) { + int resId = swipeAdapterInterface.getSwipeLayoutResourceId(position); + SwipeLayout swipeLayout = (SwipeLayout) view.findViewById(resId); + if (swipeLayout == null) + throw new IllegalStateException("can not find SwipeLayout in target view"); + + if (swipeLayout.getTag(resId) == null) { + OnLayoutListener onLayoutListener = new OnLayoutListener(position); + SwipeMemory swipeMemory = new SwipeMemory(position); + swipeLayout.addSwipeListener(swipeMemory); + swipeLayout.addOnLayoutListener(onLayoutListener); + swipeLayout.setTag(resId, new ValueBox(position, swipeMemory, onLayoutListener)); + mShownLayouts.add(swipeLayout); + } else { + ValueBox valueBox = (ValueBox) swipeLayout.getTag(resId); + valueBox.swipeMemory.setPosition(position); + valueBox.onLayoutListener.setPosition(position); + valueBox.position = position; + } } @Override diff --git a/library/src/main/java/com/daimajia/swipe/implments/SwipeItemRecyclerMangerImpl.java b/library/src/main/java/com/daimajia/swipe/implments/SwipeItemRecyclerMangerImpl.java deleted file mode 100644 index abbcd28e..00000000 --- a/library/src/main/java/com/daimajia/swipe/implments/SwipeItemRecyclerMangerImpl.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.daimajia.swipe.implments; - -import android.view.View; - -import com.daimajia.swipe.SwipeLayout; -import com.daimajia.swipe.interfaces.SwipeAdapterInterface; - -/** - * SwipeItemRecyclerMangerImpl is a helper class to help the RecyclerView to maintain open status. - */ -public class SwipeItemRecyclerMangerImpl extends SwipeItemMangerImpl { - - public SwipeItemRecyclerMangerImpl(SwipeAdapterInterface swipeAdapterInterface) { - super(swipeAdapterInterface); - } - - @Override - public void bindView(View target, int position) { - int resId = getSwipeLayoutId(position); - - OnLayoutListener onLayoutListener = new OnLayoutListener(position); - SwipeLayout swipeLayout = (SwipeLayout) target.findViewById(resId); - if (swipeLayout == null) - throw new IllegalStateException("can not find SwipeLayout in target view"); - - if (swipeLayout.getTag(resId) == null) { - SwipeMemory swipeMemory = new SwipeMemory(position); - swipeLayout.addSwipeListener(swipeMemory); - swipeLayout.addOnLayoutListener(onLayoutListener); - swipeLayout.setTag(resId, new ValueBox(position, swipeMemory, onLayoutListener)); - mShownLayouts.add(swipeLayout); - } else { - ValueBox valueBox = (ValueBox) swipeLayout.getTag(resId); - valueBox.swipeMemory.setPosition(position); - valueBox.onLayoutListener.setPosition(position); - valueBox.position = position; - } - } - - @Override - public void initialize(View target, int position) { - - } - - @Override - public void updateConvertView(View target, int position) { - - } - -} From be8b5d483ebb9ec10025bbc7e0b6f38b2a4a4013 Mon Sep 17 00:00:00 2001 From: Mike Cumings Date: Thu, 30 Apr 2015 13:36:47 -0700 Subject: [PATCH 3/3] Bump support-v4 to 22.1.1 --- library/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/build.gradle b/library/build.gradle index b2a64c19..3b815fe2 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -12,6 +12,6 @@ android { dependencies { compile 'com.android.support:recyclerview-v7:21.0.0' - compile 'com.android.support:support-v4:21.0.3' + compile 'com.android.support:support-v4:22.1.1' } apply from: './gradle-mvn-push.gradle' \ No newline at end of file