Skip to content
This repository was archived by the owner on Nov 9, 2017. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib-core-slh/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,4 @@ android {
textOutput 'stdout'
warningsAsErrors true
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -137,10 +137,11 @@ public T remove(final int location) {
}

@Override
public void swapItems(final int positionOne, final int positionTwo) {
public boolean swapItems(final int positionOne, final int positionTwo) {
T firstItem = mItems.set(positionOne, getItem(positionTwo));
notifyDataSetChanged();
mItems.set(positionTwo, firstItem);
return true;
}

public void propagateNotifyDataSetChanged(@NonNull final BaseAdapter slavedAdapter) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -227,12 +227,14 @@ public Object[] getSections() {
}

@Override
public void swapItems(final int positionOne, final int positionTwo) {
public boolean swapItems(final int positionOne, final int positionTwo) {
if (mDecoratedBaseAdapter instanceof Swappable) {
((Swappable) mDecoratedBaseAdapter).swapItems(positionOne, positionTwo);
return true;
} else {
Log.w("ListViewAnimations", "Warning: swapItems called on an adapter that does not implement Swappable!");
}
return false;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,5 @@ public interface Swappable {
* @param positionOne First adapter position.
* @param positionTwo Second adapter position.
*/
void swapItems(int positionOne, int positionTwo);
boolean swapItems(int positionOne, int positionTwo);
}
Original file line number Diff line number Diff line change
Expand Up @@ -430,11 +430,13 @@ private void switchViews(final View switchView, final long switchId, final float
final int switchViewPosition = mWrapper.getPositionForView(switchView);
int mobileViewPosition = mWrapper.getPositionForView(mMobileView);

((Swappable) mAdapter).swapItems(switchViewPosition - mWrapper.getHeaderViewsCount(), mobileViewPosition - mWrapper.getHeaderViewsCount());
((BaseAdapter) mAdapter).notifyDataSetChanged();
boolean didSwap = ((Swappable) mAdapter).swapItems(switchViewPosition - mWrapper.getHeaderViewsCount(), mobileViewPosition - mWrapper.getHeaderViewsCount());
if (didSwap) {
((BaseAdapter) mAdapter).notifyDataSetChanged();

mHoverDrawable.shift(switchView.getHeight());
mSwitchViewAnimator.animateSwitchView(switchId, translationY);
mHoverDrawable.shift(switchView.getHeight());
mSwitchViewAnimator.animateSwitchView(switchId, translationY);
}
}

/**
Expand Down