안드로이드의 preference는 primitive 타입밖에 저장할 수 없는 한계가 있습니다.
Parcelable 이나 Serializable 객체도 저장할 수 없죠.
그래서 그나마 객체를 String 타입으로 변환 표현해서 저장하는 방식을 사용하는데
여러가지 객체 구조를 스트링으로 표현할 수 있는 json이 많이 활용됩니다.
json에 대해 검색해보시고 ArrayList를 어떻게 json 구조로 변환하실까 생각해보시고,
이런 작업을 쉽게 도와주는 GSON 같은 라이브러리도 검색해보세요.