code: public void moveItem(int start, int end){
          M startItem = filteredItems.get(start);
          M endItem = filteredItems.get(end);
  
          int realStart = items.indexOf(startItem);
          int realEnd = items.indexOf(endItem);
  
          Collections.swap(items, realStart, realEnd);
          applyFilter();
  
          onItemMoved(startItem, realStart, realEnd);
          notifyItemMoved(realStart, realEnd);
      }
docs: Move an item around in the underlying array
  
  @param start     the item to move
  @param end       the position to move to