diff options
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java | 14 | ||||
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java | 10 |
2 files changed, 12 insertions, 12 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java index 062f883bc..8593e0dde 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java @@ -2,6 +2,7 @@ package de.danoeh.antennapod.adapter; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.support.annotation.Nullable; import android.support.v4.view.MotionEventCompat; import android.support.v7.widget.PopupMenu; import android.support.v7.widget.RecyclerView; @@ -59,7 +60,7 @@ public class QueueRecyclerAdapter extends RecyclerView.Adapter<QueueRecyclerAdap private boolean locked; - private int position = -1; + private FeedItem selectedItem; public QueueRecyclerAdapter(MainActivity mainActivity, ItemAccess itemAccess, @@ -88,17 +89,18 @@ public class QueueRecyclerAdapter extends RecyclerView.Adapter<QueueRecyclerAdap FeedItem item = itemAccess.getItem(pos); holder.bind(item); holder.itemView.setOnLongClickListener(v -> { - position = pos; + selectedItem = item; return false; }); } - public int getItemCount() { - return itemAccess.getCount(); + @Nullable + public FeedItem getSelectedItem() { + return selectedItem; } - public int getPosition() { - return position; + public int getItemCount() { + return itemAccess.getCount(); } public class ViewHolder extends RecyclerView.ViewHolder diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java index 3c3f7f01c..610490298 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -165,7 +165,7 @@ public class QueueFragment extends Fragment { case MOVED: int from = FeedItemUtil.indexOfItemWithId(queue, event.item.getId()); int to = event.position; - Collections.swap(queue, from, to); + queue.add(to, queue.remove(from)); recyclerAdapter.notifyItemMoved(from, to); break; } @@ -327,11 +327,9 @@ public class QueueFragment extends Fragment { if(!isVisible()) { return false; } - int pos = recyclerAdapter.getPosition(); - FeedItem selectedItem = itemAccess.getItem(pos); - + FeedItem selectedItem = recyclerAdapter.getSelectedItem(); if (selectedItem == null) { - Log.i(TAG, "Selected item at position " + pos + " was null, ignoring selection"); + Log.i(TAG, "Selected item was null, ignoring selection"); return super.onContextItemSelected(item); } @@ -367,7 +365,7 @@ public class QueueFragment extends Fragment { int from = viewHolder.getAdapterPosition(); int to = target.getAdapterPosition(); Log.d(TAG, "move(" + from + ", " + to + ")"); - Collections.swap(queue, from, to); + queue.add(to, queue.remove(from)); recyclerAdapter.notifyItemMoved(from, to); DBWriter.moveQueueItem(from, to, false); return true; |