I would simply use a 2D array.
The X row contains all the item information: price (X0), Infotext (X1), satiety (X2), etc.
The Y row stands for each individual item.
Example:
.........X0..........................X1...............................................X2
Y0......5............."This is a cool Item"..................................5
Y1....14,99......"This is an even cooler Item"...................10
Y2.....20......."This is the item you ever wanted".............15
You than make a "for each Y element" array-loop, for creating the sprites and text. Set their sprite to array.CurY (this is the Y position of each item in the array and simultaneously the ID).
You only need 1 sprite object (with all frames for all items) and 1 text object for all items.
Edit:
For the drag & drop I would do something like this:
If object is overlapping the background of the shop menu
- on key press: activate drag & drop behaviour
- on key release: deactivate drag & drop behaviour