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);
    }
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 ) ; }
Move an item around in the underlying array

@param start     the item to move
@param end       the position to move to