From 4d51cffd89df40fdc6d064045602ff7b79f44d4b Mon Sep 17 00:00:00 2001 From: Keith Date: Thu, 14 Jul 2016 10:24:37 +0800 Subject: [PATCH] In SwipeItemManagerImpl file, if use the integer to store the swipe state in SINGLE state, it will trigger state mess when scroll the listView. So use the set to store the swipe state for SINGLE as well. --- .../swipe/implments/SwipeItemMangerImpl.java | 31 +++++-------------- 1 file changed, 8 insertions(+), 23 deletions(-) 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 989849c1..a937ad02 100644 --- a/library/src/main/java/com/daimajia/swipe/implments/SwipeItemMangerImpl.java +++ b/library/src/main/java/com/daimajia/swipe/implments/SwipeItemMangerImpl.java @@ -74,7 +74,7 @@ public void openItem(int position) { if (!mOpenPositions.contains(position)) mOpenPositions.add(position); } else { - mOpenPosition = position; + mOpenPositions.add(position); } swipeAdapterInterface.notifyDatasetChanged(); } @@ -85,7 +85,7 @@ public void closeItem(int position) { mOpenPositions.remove(position); } else { if (mOpenPosition == position) - mOpenPosition = INVALID_POSITION; + mOpenPositions.remove(position); } swipeAdapterInterface.notifyDatasetChanged(); } @@ -100,11 +100,7 @@ public void closeAllExcept(SwipeLayout layout) { @Override public void closeAllItems() { - if (mode == Attributes.Mode.Multiple) { - mOpenPositions.clear(); - } else { - mOpenPosition = INVALID_POSITION; - } + mOpenPositions.clear(); for (SwipeLayout s : mShownLayouts) { s.close(); } @@ -117,11 +113,7 @@ public void removeShownLayouts(SwipeLayout layout) { @Override public List getOpenItems() { - if (mode == Attributes.Mode.Multiple) { - return new ArrayList(mOpenPositions); - } else { - return Collections.singletonList(mOpenPosition); - } + return new ArrayList(mOpenPositions); } @Override @@ -131,11 +123,7 @@ public List getOpenLayouts() { @Override public boolean isOpen(int position) { - if (mode == Attributes.Mode.Multiple) { - return mOpenPositions.contains(position); - } else { - return mOpenPosition == position; - } + return mOpenPositions.contains(position); } class ValueBox { @@ -183,11 +171,7 @@ class SwipeMemory extends SimpleSwipeListener { @Override public void onClose(SwipeLayout layout) { - if (mode == Attributes.Mode.Multiple) { - mOpenPositions.remove(position); - } else { - mOpenPosition = INVALID_POSITION; - } + mOpenPositions.remove(position); } @Override @@ -203,7 +187,8 @@ public void onOpen(SwipeLayout layout) { mOpenPositions.add(position); else { closeAllExcept(layout); - mOpenPosition = position; + mOpenPositions.clear(); + mOpenPositions.add(position); } }