Skip to content

Commit e82cf4b

Browse files
author
Mike Cumings
committed
Remove redundant operations from SwipeItemManagerImpl and consolidate into the base class.
1 parent 9a0bb05 commit e82cf4b

File tree

9 files changed

+35
-148
lines changed

9 files changed

+35
-148
lines changed

demo/src/main/java/com/daimajia/swipedemo/adapter/RecyclerViewAdapter.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import com.daimajia.swipe.SimpleSwipeListener;
1616
import com.daimajia.swipe.SwipeLayout;
1717
import com.daimajia.swipe.adapters.RecyclerSwipeAdapter;
18-
import com.daimajia.swipe.implments.SwipeItemRecyclerMangerImpl;
1918
import com.daimajia.swipedemo.R;
2019

2120
import java.util.ArrayList;
@@ -90,7 +89,7 @@ public void onClick(View view) {
9089
});
9190
viewHolder.textViewPos.setText((position + 1) + ".");
9291
viewHolder.textViewData.setText(item);
93-
mItemManger.bindView(viewHolder.itemView, position);
92+
mItemManger.bind(viewHolder.itemView, position);
9493
}
9594

9695
@Override

library/src/main/java/com/daimajia/swipe/adapters/ArraySwipeAdapter.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66
import android.widget.ArrayAdapter;
77

88
import com.daimajia.swipe.SwipeLayout;
9-
import com.daimajia.swipe.implments.SwipeItemAdapterMangerImpl;
9+
import com.daimajia.swipe.implments.SwipeItemMangerImpl;
1010
import com.daimajia.swipe.interfaces.SwipeAdapterInterface;
1111
import com.daimajia.swipe.interfaces.SwipeItemMangerInterface;
1212
import com.daimajia.swipe.util.Attributes;
1313

1414
import java.util.List;
1515

16-
public abstract class ArraySwipeAdapter<T> extends ArrayAdapter implements SwipeItemMangerInterface,SwipeAdapterInterface {
16+
public abstract class ArraySwipeAdapter<T> extends ArrayAdapter implements SwipeItemMangerInterface, SwipeAdapterInterface {
1717

18-
private SwipeItemAdapterMangerImpl mItemManger = new SwipeItemAdapterMangerImpl(this);
18+
private SwipeItemMangerImpl mItemManger = new SwipeItemMangerImpl(this);
1919
{}
2020
public ArraySwipeAdapter(Context context, int resource) {
2121
super(context, resource);
@@ -48,13 +48,8 @@ public void notifyDatasetChanged() {
4848

4949
@Override
5050
public View getView(int position, View convertView, ViewGroup parent) {
51-
boolean convertViewIsNull = convertView == null;
5251
View v = super.getView(position, convertView, parent);
53-
if(convertViewIsNull){
54-
mItemManger.initialize(v, position);
55-
}else{
56-
mItemManger.updateConvertView(v, position);
57-
}
52+
mItemManger.bind(v, position);
5853
return v;
5954
}
6055

library/src/main/java/com/daimajia/swipe/adapters/BaseSwipeAdapter.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import android.widget.BaseAdapter;
66

77
import com.daimajia.swipe.SwipeLayout;
8-
import com.daimajia.swipe.implments.SwipeItemAdapterMangerImpl;
8+
import com.daimajia.swipe.implments.SwipeItemMangerImpl;
99
import com.daimajia.swipe.interfaces.SwipeAdapterInterface;
1010
import com.daimajia.swipe.interfaces.SwipeItemMangerInterface;
1111
import com.daimajia.swipe.util.Attributes;
@@ -14,7 +14,7 @@
1414

1515
public abstract class BaseSwipeAdapter extends BaseAdapter implements SwipeItemMangerInterface, SwipeAdapterInterface {
1616

17-
protected SwipeItemAdapterMangerImpl mItemManger = new SwipeItemAdapterMangerImpl(this);
17+
protected SwipeItemMangerImpl mItemManger = new SwipeItemMangerImpl(this);
1818

1919
/**
2020
* 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) {
5252
View v = convertView;
5353
if(v == null){
5454
v = generateView(position, parent);
55-
mItemManger.initialize(v, position);
56-
}else{
57-
mItemManger.updateConvertView(v, position);
5855
}
56+
mItemManger.bind(v, position);
5957
fillValues(position, v);
6058
return v;
6159
}

library/src/main/java/com/daimajia/swipe/adapters/CursorSwipeAdapter.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import android.view.ViewGroup;
88

99
import com.daimajia.swipe.SwipeLayout;
10-
import com.daimajia.swipe.implments.SwipeItemAdapterMangerImpl;
10+
import com.daimajia.swipe.implments.SwipeItemMangerImpl;
1111
import com.daimajia.swipe.interfaces.SwipeAdapterInterface;
1212
import com.daimajia.swipe.interfaces.SwipeItemMangerInterface;
1313
import com.daimajia.swipe.util.Attributes;
@@ -16,7 +16,7 @@
1616

1717
public abstract class CursorSwipeAdapter extends CursorAdapter implements SwipeItemMangerInterface, SwipeAdapterInterface {
1818

19-
private SwipeItemAdapterMangerImpl mItemManger = new SwipeItemAdapterMangerImpl(this);
19+
private SwipeItemMangerImpl mItemManger = new SwipeItemMangerImpl(this);
2020

2121
protected CursorSwipeAdapter(Context context, Cursor c, boolean autoRequery) {
2222
super(context, c, autoRequery);
@@ -28,13 +28,8 @@ protected CursorSwipeAdapter(Context context, Cursor c, int flags) {
2828

2929
@Override
3030
public View getView(int position, View convertView, ViewGroup parent) {
31-
boolean convertViewIsNull = convertView == null;
3231
View v = super.getView(position, convertView, parent);
33-
if(convertViewIsNull){
34-
mItemManger.initialize(v, position);
35-
}else{
36-
mItemManger.updateConvertView(v, position);
37-
}
32+
mItemManger.bind(v, position);
3833
return v;
3934
}
4035

library/src/main/java/com/daimajia/swipe/adapters/RecyclerSwipeAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import android.view.ViewGroup;
55

66
import com.daimajia.swipe.SwipeLayout;
7-
import com.daimajia.swipe.implments.SwipeItemRecyclerMangerImpl;
7+
import com.daimajia.swipe.implments.SwipeItemMangerImpl;
88
import com.daimajia.swipe.interfaces.SwipeAdapterInterface;
99
import com.daimajia.swipe.interfaces.SwipeItemMangerInterface;
1010
import com.daimajia.swipe.util.Attributes;
@@ -13,7 +13,7 @@
1313

1414
public abstract class RecyclerSwipeAdapter<VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<VH> implements SwipeItemMangerInterface, SwipeAdapterInterface {
1515

16-
public SwipeItemRecyclerMangerImpl mItemManger = new SwipeItemRecyclerMangerImpl(this);
16+
public SwipeItemMangerImpl mItemManger = new SwipeItemMangerImpl(this);
1717

1818
@Override
1919
public abstract VH onCreateViewHolder(ViewGroup parent, int viewType);

library/src/main/java/com/daimajia/swipe/adapters/SimpleCursorSwipeAdapter.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import android.view.ViewGroup;
88

99
import com.daimajia.swipe.SwipeLayout;
10-
import com.daimajia.swipe.implments.SwipeItemAdapterMangerImpl;
1110
import com.daimajia.swipe.implments.SwipeItemMangerImpl;
1211
import com.daimajia.swipe.interfaces.SwipeAdapterInterface;
1312
import com.daimajia.swipe.interfaces.SwipeItemMangerInterface;
@@ -17,7 +16,7 @@
1716

1817
public abstract class SimpleCursorSwipeAdapter extends SimpleCursorAdapter implements SwipeItemMangerInterface, SwipeAdapterInterface {
1918

20-
private SwipeItemAdapterMangerImpl mItemManger = new SwipeItemAdapterMangerImpl(this);
19+
private SwipeItemMangerImpl mItemManger = new SwipeItemMangerImpl(this);
2120

2221
protected SimpleCursorSwipeAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) {
2322
super(context, layout, c, from, to, flags);
@@ -29,13 +28,8 @@ protected SimpleCursorSwipeAdapter(Context context, int layout, Cursor c, String
2928

3029
@Override
3130
public View getView(int position, View convertView, ViewGroup parent) {
32-
boolean convertViewIsNull = convertView == null;
3331
View v = super.getView(position, convertView, parent);
34-
if(convertViewIsNull){
35-
mItemManger.initialize(v, position);
36-
}else{
37-
mItemManger.updateConvertView(v, position);
38-
}
32+
mItemManger.bind(v, position);
3933
return v;
4034
}
4135

library/src/main/java/com/daimajia/swipe/implments/SwipeItemAdapterMangerImpl.java

Lines changed: 0 additions & 53 deletions
This file was deleted.

library/src/main/java/com/daimajia/swipe/implments/SwipeItemMangerImpl.java

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
/**
1818
* SwipeItemMangerImpl is a helper class to help all the adapters to maintain open status.
1919
*/
20-
public abstract class SwipeItemMangerImpl implements SwipeItemMangerInterface {
20+
public class SwipeItemMangerImpl implements SwipeItemMangerInterface {
2121

2222
private Attributes.Mode mode = Attributes.Mode.Single;
2323
public final int INVALID_POSITION = -1;
@@ -47,16 +47,25 @@ public void setMode(Attributes.Mode mode) {
4747
mOpenPosition = INVALID_POSITION;
4848
}
4949

50-
/* initialize and updateConvertView used for AdapterManagerImpl */
51-
public abstract void initialize(View target, int position);
52-
53-
public abstract void updateConvertView(View target, int position);
54-
55-
/* bindView used for RecyclerViewManagerImpl */
56-
public abstract void bindView(View target, int position);
57-
58-
public int getSwipeLayoutId(int position) {
59-
return swipeAdapterInterface.getSwipeLayoutResourceId(position);
50+
public void bind(View view, int position) {
51+
int resId = swipeAdapterInterface.getSwipeLayoutResourceId(position);
52+
SwipeLayout swipeLayout = (SwipeLayout) view.findViewById(resId);
53+
if (swipeLayout == null)
54+
throw new IllegalStateException("can not find SwipeLayout in target view");
55+
56+
if (swipeLayout.getTag(resId) == null) {
57+
OnLayoutListener onLayoutListener = new OnLayoutListener(position);
58+
SwipeMemory swipeMemory = new SwipeMemory(position);
59+
swipeLayout.addSwipeListener(swipeMemory);
60+
swipeLayout.addOnLayoutListener(onLayoutListener);
61+
swipeLayout.setTag(resId, new ValueBox(position, swipeMemory, onLayoutListener));
62+
mShownLayouts.add(swipeLayout);
63+
} else {
64+
ValueBox valueBox = (ValueBox) swipeLayout.getTag(resId);
65+
valueBox.swipeMemory.setPosition(position);
66+
valueBox.onLayoutListener.setPosition(position);
67+
valueBox.position = position;
68+
}
6069
}
6170

6271
@Override

library/src/main/java/com/daimajia/swipe/implments/SwipeItemRecyclerMangerImpl.java

Lines changed: 0 additions & 50 deletions
This file was deleted.

0 commit comments

Comments
 (0)