@Override
            public boolean onMove(@NonNull final RecyclerView recyclerView, @NonNull final RecyclerView.ViewHolder viewHolder, @NonNull final RecyclerView.ViewHolder target) {
                //Note: do NOT use method "swapItems" here, because the "notifyItemChanged" calls sometimes stop the drag for some reason
                final int srcIdx = viewHolder.getBindingAdapterPosition();
                final int trgIdx = target.getBindingAdapterPosition();
                if (srcIdx != trgIdx) {
                    Collections.swap(itemList, srcIdx, trgIdx);
                    if (notifyOnEvents) {
                        notifyItemMoved(srcIdx, trgIdx);
                    }
                }

                return true;
            }
Whether this adapter should support drag&drop. If true, then use {@link #registerStartDrag(RecyclerView.ViewHolder, View)}
in your implementation of {@link #onCreateViewHolder(ViewGroup, int)} to register a GUI element for starting drag/drop
main/src/main/java/cgeo/geocaching/ui/recyclerview/ManagedListAdapter.java