Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-05-26 22:17:30 +0300
committerStefan Niedermann <info@niedermann.it>2021-05-26 22:17:30 +0300
commit44f13d27aafb967a42e5fc539992b12055128446 (patch)
tree6d2a55ec0babce164805546c7d9b093eb909a44c /cross-tab-drag-and-drop
parent3dd0d1224398857205f6c782cbbe2247ec90ae98 (diff)
Minor code improvements
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'cross-tab-drag-and-drop')
-rw-r--r--cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/CrossTabDragAndDrop.java41
-rw-r--r--cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/DragAndDropUtil.java1
-rw-r--r--cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/DraggedItemLocalState.java8
-rw-r--r--cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/ScrollHelper.java4
4 files changed, 30 insertions, 24 deletions
diff --git a/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/CrossTabDragAndDrop.java b/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/CrossTabDragAndDrop.java
index dcedc584b..e22ad5f17 100644
--- a/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/CrossTabDragAndDrop.java
+++ b/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/CrossTabDragAndDrop.java
@@ -6,6 +6,7 @@ import android.view.DragEvent;
import android.view.View;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -21,8 +22,7 @@ import java.util.Set;
public class CrossTabDragAndDrop<
TabFragment extends Fragment & DragAndDropTab<ItemAdapter>,
ItemAdapter extends RecyclerView.Adapter<?> & DragAndDropAdapter<ItemModel>,
- ItemModel extends DragAndDropModel
- > {
+ ItemModel extends DragAndDropModel> {
private static final String TAG = CrossTabDragAndDrop.class.getCanonicalName();
private static final ScrollHelper SCROLL_HELPER = new ScrollHelper();
@@ -50,8 +50,9 @@ public class CrossTabDragAndDrop<
public void register(final ViewPager2 viewPager, TabLayout stackLayout, FragmentManager fm) {
viewPager.setOnDragListener((View v, DragEvent dragEvent) -> {
- DraggedItemLocalState<TabFragment, ItemAdapter, ItemModel> draggedItemLocalState = (DraggedItemLocalState<TabFragment, ItemAdapter, ItemModel>) dragEvent.getLocalState();
- View draggedView = draggedItemLocalState.getDraggedView();
+ //noinspection unchecked
+ final DraggedItemLocalState<TabFragment, ItemAdapter, ItemModel> draggedItemLocalState = (DraggedItemLocalState<TabFragment, ItemAdapter, ItemModel>) dragEvent.getLocalState();
+ final View draggedView = draggedItemLocalState.getDraggedView();
switch (dragEvent.getAction()) {
case DragEvent.ACTION_DRAG_STARTED: {
draggedView.setVisibility(View.INVISIBLE);
@@ -59,12 +60,12 @@ public class CrossTabDragAndDrop<
break;
}
case DragEvent.ACTION_DRAG_LOCATION: {
- RecyclerView currentRecyclerView = draggedItemLocalState.getRecyclerView();
- ItemAdapter itemAdapter = draggedItemLocalState.getItemAdapter();
+ final RecyclerView currentRecyclerView = draggedItemLocalState.getRecyclerView();
+ final ItemAdapter itemAdapter = draggedItemLocalState.getItemAdapter();
- long now = System.currentTimeMillis();
+ final long now = System.currentTimeMillis();
if (lastSwap + dragAndDropMsToReact < now) { // don't change Tabs so fast!
- int oldTabPosition = viewPager.getCurrentItem();
+ final int oldTabPosition = viewPager.getCurrentItem();
boolean shouldSwitchTab = true;
@@ -131,7 +132,7 @@ public class CrossTabDragAndDrop<
draggedItemLocalState.setInsertedListener(null);
view.setVisibility(View.INVISIBLE);
draggedItemLocalState.setDraggedView(view);
- pushAroundItems(view, recyclerView, dragEvent, itemAdapter, (DraggedItemLocalState<TabFragment, ItemAdapter, ItemModel>) draggedItemLocalState, now);
+ pushAroundItems(view, recyclerView, dragEvent, itemAdapter, draggedItemLocalState, now);
}
@Override
@@ -141,7 +142,7 @@ public class CrossTabDragAndDrop<
recyclerView.addOnChildAttachStateChangeListener(onChildAttachStateChangeListener);
//insert item in new tab
- View firstVisibleView = recyclerView.getChildAt(0);
+ @Nullable final View firstVisibleView = recyclerView.getChildAt(0);
int positionToInsert = firstVisibleView == null ? 0 : recyclerView.getChildAdapterPosition(firstVisibleView) + 1;
itemAdapter.insertItem(draggedItemLocalState.getDraggedItemModel(), positionToInsert);
@@ -149,12 +150,12 @@ public class CrossTabDragAndDrop<
}
private void pushAroundItems(@NonNull View view, RecyclerView recyclerView, DragEvent dragEvent, ItemAdapter itemAdapter, DraggedItemLocalState<TabFragment, ItemAdapter, ItemModel> draggedItemLocalState, long now) {
- View viewUnder = recyclerView.findChildViewUnder(dragEvent.getX(), dragEvent.getY());
+ @Nullable final View viewUnder = recyclerView.findChildViewUnder(dragEvent.getX(), dragEvent.getY());
if (viewUnder != null) {
- int toPositon = recyclerView.getChildAdapterPosition(viewUnder);
+ final int toPositon = recyclerView.getChildAdapterPosition(viewUnder);
if (toPositon != -1) {
- int fromPosition = recyclerView.getChildAdapterPosition(view);
+ final int fromPosition = recyclerView.getChildAdapterPosition(view);
if (fromPosition != -1 && fromPosition != toPositon) {
recyclerView.post(() -> {
itemAdapter.moveItem(fromPosition, toPositon);
@@ -171,7 +172,7 @@ public class CrossTabDragAndDrop<
}
private void detectAndKillDuplicatesInNeighbourTab(ViewPager2 viewPager, ItemModel itemToFind, FragmentManager fm, int oldTabPosition, int newTabPosition) {
- int tabPositionToCheck = newTabPosition > oldTabPosition ? newTabPosition + 1 : newTabPosition - 1;
+ final int tabPositionToCheck = newTabPosition > oldTabPosition ? newTabPosition + 1 : newTabPosition - 1;
if (isMovePossible(viewPager, tabPositionToCheck)) {
viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@@ -179,15 +180,15 @@ public class CrossTabDragAndDrop<
public void onPageSelected(int position) {
super.onPageSelected(position);
viewPager.unregisterOnPageChangeCallback(this);
- ItemAdapter itemAdapter = DragAndDropUtil.<TabFragment>getTabFragment(fm, Objects.requireNonNull(viewPager.getAdapter()).getItemId(tabPositionToCheck)).getAdapter();
+ final ItemAdapter itemAdapter = DragAndDropUtil.<TabFragment>getTabFragment(fm, Objects.requireNonNull(viewPager.getAdapter()).getItemId(tabPositionToCheck)).getAdapter();
itemAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@Override
public void onChanged() {
super.onChanged();
itemAdapter.unregisterAdapterDataObserver(this);
- List<ItemModel> itemList = itemAdapter.getItemList();
+ final List<ItemModel> itemList = itemAdapter.getItemList();
for (int i = 0; i < itemList.size(); i++) {
- ItemModel c = itemList.get(i);
+ final ItemModel c = itemList.get(i);
if (itemToFind.getComparableId().equals(c.getComparableId())) {
itemAdapter.removeItem(i);
itemAdapter.notifyItemRemoved(i);
@@ -203,15 +204,15 @@ public class CrossTabDragAndDrop<
}
private void removeItem(RecyclerView currentRecyclerView, View view, ItemAdapter itemAdapter) {
- int oldItemPosition = currentRecyclerView.getChildAdapterPosition(view);
+ final int oldItemPosition = currentRecyclerView.getChildAdapterPosition(view);
if (oldItemPosition != -1) {
itemAdapter.removeItem(oldItemPosition);
}
}
- private void notifyListeners(DraggedItemLocalState draggedItemLocalState) {
- for (ItemMovedByDragListener listener : moveListenerList) {
+ private void notifyListeners(DraggedItemLocalState<TabFragment, ItemAdapter, ItemModel> draggedItemLocalState) {
+ for (ItemMovedByDragListener<ItemModel> listener : moveListenerList) {
listener.onItemMoved(draggedItemLocalState.getDraggedItemModel(), draggedItemLocalState.getCurrentTabId(), draggedItemLocalState.getPositionInItemAdapter());
}
}
diff --git a/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/DragAndDropUtil.java b/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/DragAndDropUtil.java
index 677cb4f0c..5077bae82 100644
--- a/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/DragAndDropUtil.java
+++ b/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/DragAndDropUtil.java
@@ -12,6 +12,7 @@ public class DragAndDropUtil {
// Util class
}
+ @SuppressWarnings("unchecked")
protected static <T> T getTabFragment(@NonNull FragmentManager fm, @Nullable Long currentStackId) throws IllegalArgumentException {
return (T) fm.findFragmentByTag("f" + currentStackId);
}
diff --git a/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/DraggedItemLocalState.java b/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/DraggedItemLocalState.java
index b1f0ed535..f8658706c 100644
--- a/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/DraggedItemLocalState.java
+++ b/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/DraggedItemLocalState.java
@@ -2,6 +2,7 @@ package it.niedermann.android.crosstabdnd;
import android.view.View;
+import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -14,7 +15,7 @@ public class DraggedItemLocalState<
TabFragment extends Fragment & DragAndDropTab<ItemAdapter>,
ItemAdapter extends RecyclerView.Adapter<?> & DragAndDropAdapter<ItemModel>,
ItemModel> {
- private ItemModel draggedCard;
+ private final ItemModel draggedCard;
/** The original dragged view */
private final View originalDraggedView;
/** The currently dragged view (can change when the tab changes */
@@ -33,18 +34,19 @@ public class DraggedItemLocalState<
this.positionInCardAdapter = positionInCardAdapter;
}
- protected void onDragStart(ViewPager2 viewPager, FragmentManager fm) {
+ protected void onDragStart(@NonNull ViewPager2 viewPager, @NonNull FragmentManager fm) {
this.currentTabId = Objects.requireNonNull(viewPager.getAdapter()).getItemId(viewPager.getCurrentItem());
this.recyclerView = DragAndDropUtil.<TabFragment>getTabFragment(fm, currentTabId).getRecyclerView();
}
- protected void onTabChanged(ViewPager2 viewPager, FragmentManager fm) {
+ protected void onTabChanged(@NonNull ViewPager2 viewPager, @NonNull FragmentManager fm) {
if (insertedListener != null) {
this.recyclerView.removeOnChildAttachStateChangeListener(insertedListener);
this.insertedListener = null;
}
this.currentTabId = Objects.requireNonNull(viewPager.getAdapter()).getItemId(viewPager.getCurrentItem());
this.recyclerView = DragAndDropUtil.<TabFragment>getTabFragment(fm, currentTabId).getRecyclerView();
+ //noinspection unchecked
this.itemAdapter = (ItemAdapter) recyclerView.getAdapter();
}
diff --git a/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/ScrollHelper.java b/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/ScrollHelper.java
index 29ce3c35a..566eca5cd 100644
--- a/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/ScrollHelper.java
+++ b/cross-tab-drag-and-drop/src/main/java/it/niedermann/android/crosstabdnd/ScrollHelper.java
@@ -2,6 +2,8 @@ package it.niedermann.android.crosstabdnd;
import android.os.Handler;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
@SuppressWarnings("WeakerAccess")
@@ -19,7 +21,7 @@ public class ScrollHelper implements Runnable {
private RecyclerView currentRecyclerView;
private final Handler handler = new Handler();
- public void startScroll(RecyclerView recyclerView, ScrollDirection scrollDirection) {
+ public void startScroll(@NonNull RecyclerView recyclerView, @Nullable ScrollDirection scrollDirection) {
this.scrollDirection = scrollDirection;
this.currentRecyclerView = recyclerView;
if (!shouldScroll) {