Вы просто присваиваете тот же самый экземпляр buttons
ArrayList другой переменной.tempList
в итоге будет ссылаться на тот же ArrayList.
Попробуйте вместо этого:
List<TristateCheckBox> tempList = new ArrayList<TristateCheckBox>(buttons);
Collections.shuffle(tempList);
Что конструктор ArrayList, принимающий другую коллекцию, будет включать каждую запись данной коллекции в новый список,Не копии записей, просто те же ссылки в другом списке.