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/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 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..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,7 +6,6 @@ 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; @@ -14,9 +13,9 @@ 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); @@ -42,15 +41,15 @@ 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; 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 b7fb1aeb..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,9 +5,8 @@ import android.widget.BaseAdapter; 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.SwipeAdapterInterface; import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; import com.daimajia.swipe.util.Attributes; @@ -15,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. @@ -42,16 +41,19 @@ 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) { 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 0bde0e8c..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,9 +7,8 @@ import android.view.ViewGroup; 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.SwipeAdapterInterface; import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; import com.daimajia.swipe.util.Attributes; @@ -17,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); @@ -29,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; } @@ -54,6 +48,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..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); @@ -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/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 de3a570f..00000000 --- a/library/src/main/java/com/daimajia/swipe/implments/SwipeItemAdapterMangerImpl.java +++ /dev/null @@ -1,66 +0,0 @@ -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 SwipeItemAdapterMangerImpl(BaseAdapter adapter) { - super(adapter); - this.mAdapter = adapter; - } - - @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 e4a330e5..989849c1 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; @@ -19,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; @@ -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() { @@ -63,21 +47,24 @@ public void setMode(Attributes.Mode mode) { mOpenPosition = INVALID_POSITION; } - /* initialize and updateConvertView used for AdapterManagerImpl */ - public abstract void initialize(View target, int 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"); - 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) { - if (mBaseAdapter != null) { - return ((SwipeAdapterInterface) (mBaseAdapter)).getSwipeLayoutResourceId(position); - } else if (mRecyclerAdapter != null) { - return ((SwipeAdapterInterface) (mRecyclerAdapter)).getSwipeLayoutResourceId(position); + 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 { - return -1; + ValueBox valueBox = (ValueBox) swipeLayout.getTag(resId); + valueBox.swipeMemory.setPosition(position); + valueBox.onLayoutListener.setPosition(position); + valueBox.position = position; } } @@ -89,11 +76,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 +87,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 +120,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 deleted file mode 100644 index 97cd7257..00000000 --- a/library/src/main/java/com/daimajia/swipe/implments/SwipeItemRecyclerMangerImpl.java +++ /dev/null @@ -1,63 +0,0 @@ -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 SwipeItemRecyclerMangerImpl(RecyclerView.Adapter adapter) { - super(adapter); - this.mAdapter = adapter; - } - - @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) { - - } - -} 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); }