So even though I was setting the position to increments of 16px, sometimes I could drag and drop and the positioning would be a few pixels out and the rows wouldn't 'snap' to position and would be sometimes overlapping by about 4 or 6 pixels. I couldn't work out why that was happening even though I had set the exact positions in global variables. I would need to tap the row again for it to snap into position.
The other issue I had was when I started the drag I was saving the start position to a global variable and swapping the next row it overlapped with and moving the next row to that start position.
However, I realised if I wanted to drag down more rows, all of those rows would then move to the start position, not really bugs either of them just not refined.
The other thing that I've learned looking at your example is you use one sprite and I have a different container sprite for each row which makes more sense from an efficiency point of view.
Again, I can't thank you enough.