Fixed Lollipop issue were the edit list would not behave correctly

This commit is contained in:
Ziver Koc 2015-01-23 18:22:53 +01:00
parent b2fc0d87a7
commit 103c8cbc4f
2 changed files with 12 additions and 6 deletions

View file

@ -20,6 +20,7 @@ public class UeBehaviourStop extends UeBehaviour {
if(!super.stopExecution()) { if(!super.stopExecution()) {
log.debug("Terminating executor"); log.debug("Terminating executor");
executor.terminateNonBlock(); executor.terminateNonBlock();
executor.setNextBehaviour(0);
} }
} }

View file

@ -30,6 +30,8 @@ import android.graphics.Color;
import android.graphics.Paint; import android.graphics.Paint;
import android.graphics.Rect; import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.os.Build;
import android.support.v4.BuildConfig;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.MotionEvent; import android.view.MotionEvent;
@ -353,20 +355,24 @@ public class DynamicListView extends ListView {
final long switchItemID = isBelow ? mBelowItemId : mAboveItemId; final long switchItemID = isBelow ? mBelowItemId : mAboveItemId;
View switchView = isBelow ? belowView : aboveView; View switchView = isBelow ? belowView : aboveView;
final int originalItem = getPositionForView(mobileView);
if (switchView == null) { if (switchView == null) {
updateNeighborViewsForID(mMobileItemId); updateNeighborViewsForID(mMobileItemId);
return; return;
} }
listener.swapItems(originalItem, getPositionForView(switchView)); listener.swapItems(getPositionForView(mobileView), getPositionForView(switchView));
((StableArrayAdapter) getAdapter()).notifyDataSetChanged(); ((StableArrayAdapter) getAdapter()).notifyDataSetChanged();
mDownY = mLastEventY; mDownY = mLastEventY;
mobileView.setVisibility(View.VISIBLE); if(android.os.Build.VERSION.SDK_INT < 21) {
switchView.setVisibility(View.INVISIBLE); // As we swap the items, the mobileView and switchView will contain the
// switched items in older versions of android so we need to switch the
// visibility of the two views.
mobileView.setVisibility(View.VISIBLE);
switchView.setVisibility(View.INVISIBLE);
}
updateNeighborViewsForID(mMobileItemId); updateNeighborViewsForID(mMobileItemId);
@ -375,11 +381,9 @@ public class DynamicListView extends ListView {
observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() { public boolean onPreDraw() {
observer.removeOnPreDrawListener(this); observer.removeOnPreDrawListener(this);
View switchView = getViewForID(switchItemID); View switchView = getViewForID(switchItemID);
mTotalOffset += deltaY; mTotalOffset += deltaY;
int switchViewNewTop = switchView.getTop(); int switchViewNewTop = switchView.getTop();
int delta = switchViewStartTop - switchViewNewTop; int delta = switchViewStartTop - switchViewNewTop;
@ -428,6 +432,7 @@ public class DynamicListView extends ListView {
} }
else if(mMode == TouchMode.SWAP) { else if(mMode == TouchMode.SWAP) {
mHoverCellCurrentBounds.offsetTo(mHoverCellOriginalBounds.left, mobileView.getTop()); mHoverCellCurrentBounds.offsetTo(mHoverCellOriginalBounds.left, mobileView.getTop());
((StableArrayAdapter) getAdapter()).notifyDataSetChanged();
} }
// Animate // Animate