I have a few suggestions for improving your current code. Rather than defining a List of Objects to hold your lists, you can type it more strongly by using the following syntax:
ArrayList< ArrayList<? extends ItemProperties> > lists = new ArrayList<>();
So now when you loop through your list you don't have to type cast your elements in the for-each
loop.
for (ArrayList<? extends ItemProperties> o : lists) {
// Do something
}