From 7c5486aa08ee7d72ed4af1f56714c7bef5f488c3 Mon Sep 17 00:00:00 2001 From: seven332 Date: Tue, 16 Apr 2019 20:39:14 +0800 Subject: [PATCH] Fix RecyclerView drag and drop --- .../ehviewer/ui/scene/DownloadLabelsScene.java | 14 +++----------- .../ehviewer/ui/scene/QuickSearchScene.java | 17 +++++------------ 2 files changed, 8 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadLabelsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadLabelsScene.java index 4249e81da..436f0f5fc 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadLabelsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadLabelsScene.java @@ -37,7 +37,6 @@ import com.h6ah4i.android.widget.advrecyclerview.animator.SwipeDismissItemAnimat import com.h6ah4i.android.widget.advrecyclerview.draggable.DraggableItemAdapter; import com.h6ah4i.android.widget.advrecyclerview.draggable.ItemDraggableRange; import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager; -import com.h6ah4i.android.widget.advrecyclerview.touchguard.RecyclerViewTouchActionGuardManager; import com.h6ah4i.android.widget.advrecyclerview.utils.AbstractDraggableItemViewHolder; import com.hippo.app.EditTextDialogBuilder; import com.hippo.easyrecyclerview.EasyRecyclerView; @@ -98,25 +97,21 @@ public class DownloadLabelsScene extends ToolbarScene { tip.setCompoundDrawables(null, drawable, null, null); tip.setText(R.string.no_download_label); - // touch guard manager (this class is required to suppress scrolling while swipe-dismiss animation is running) - RecyclerViewTouchActionGuardManager guardManager = new RecyclerViewTouchActionGuardManager(); - guardManager.setInterceptVerticalScrollingWhileAnimationRunning(true); - guardManager.setEnabled(true); // drag & drop manager RecyclerViewDragDropManager dragDropManager = new RecyclerViewDragDropManager(); dragDropManager.setDraggingItemShadowDrawable( (NinePatchDrawable) context.getResources().getDrawable(R.drawable.shadow_8dp)); + RecyclerView.Adapter adapter = new LabelAdapter(); adapter.setHasStableIds(true); adapter = dragDropManager.createWrappedAdapter(adapter); // wrap for dragging mAdapter = adapter; final GeneralItemAnimator animator = new SwipeDismissItemAnimator(); - animator.setSupportsChangeAnimations(false); - mRecyclerView.hasFixedSize(); + mRecyclerView.setLayoutManager(new LinearLayoutManager(context)); mRecyclerView.setAdapter(adapter); mRecyclerView.setItemAnimator(animator); - guardManager.attachRecyclerView(mRecyclerView); + dragDropManager.attachRecyclerView(mRecyclerView); updateView(); @@ -382,9 +377,6 @@ public class DownloadLabelsScene extends ToolbarScene { } EhApplication.getDownloadManager(context).moveLabel(fromPosition, toPosition); - if (mAdapter != null && mList != null) { - notifyItemMoved(fromPosition, toPosition); - } } @Override diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/QuickSearchScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/QuickSearchScene.java index 334ac3536..848a43f33 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/QuickSearchScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/QuickSearchScene.java @@ -29,12 +29,11 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator; import com.h6ah4i.android.widget.advrecyclerview.animator.GeneralItemAnimator; -import com.h6ah4i.android.widget.advrecyclerview.animator.SwipeDismissItemAnimator; import com.h6ah4i.android.widget.advrecyclerview.draggable.DraggableItemAdapter; import com.h6ah4i.android.widget.advrecyclerview.draggable.ItemDraggableRange; import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager; -import com.h6ah4i.android.widget.advrecyclerview.touchguard.RecyclerViewTouchActionGuardManager; import com.h6ah4i.android.widget.advrecyclerview.utils.AbstractDraggableItemViewHolder; import com.hippo.easyrecyclerview.EasyRecyclerView; import com.hippo.ehviewer.EhDB; @@ -95,26 +94,21 @@ public final class QuickSearchScene extends ToolbarScene { tip.setCompoundDrawables(null, drawable, null, null); tip.setText(R.string.no_quick_search); - // touch guard manager (this class is required to suppress scrolling while swipe-dismiss animation is running) - RecyclerViewTouchActionGuardManager guardManager = new RecyclerViewTouchActionGuardManager(); - guardManager.setInterceptVerticalScrollingWhileAnimationRunning(true); - guardManager.setEnabled(true); // drag & drop manager RecyclerViewDragDropManager dragDropManager = new RecyclerViewDragDropManager(); dragDropManager.setDraggingItemShadowDrawable( (NinePatchDrawable) context.getResources().getDrawable(R.drawable.shadow_8dp)); - // swipe manager + RecyclerView.Adapter adapter = new QuickSearchAdapter(); adapter.setHasStableIds(true); adapter = dragDropManager.createWrappedAdapter(adapter); // wrap for dragging mAdapter = adapter; - final GeneralItemAnimator animator = new SwipeDismissItemAnimator(); - animator.setSupportsChangeAnimations(false); - mRecyclerView.hasFixedSize(); + + final GeneralItemAnimator animator = new DraggableItemAnimator(); mRecyclerView.setLayoutManager(new LinearLayoutManager(context)); mRecyclerView.setAdapter(adapter); mRecyclerView.setItemAnimator(animator); - guardManager.attachRecyclerView(mRecyclerView); + dragDropManager.attachRecyclerView(mRecyclerView); updateView(); @@ -257,7 +251,6 @@ public final class QuickSearchScene extends ToolbarScene { EhDB.moveQuickSearch(fromPosition, toPosition); final QuickSearch item = mQuickSearchList.remove(fromPosition); mQuickSearchList.add(toPosition, item); - notifyItemMoved(fromPosition, toPosition); } @Override