Summary
Potentially, this was one of the most complicated apps we have built. If it is at all unclear exactly what happened, the way to overcome this is to break it into pieces (or fragments).
Each Fragment has a class and a layout. The Fragment with the list communicates with the Activity
via the interface, and the Activity either loads a new (detail) Fragment into itself (when in landscape) or starts a new Activity
that loads the same (detail) Fragment
when in the portrait orientation. All the data is tucked away in our singleton and can be basically forgotten about because it can only ever be instantiated once, and it is guaranteed that any class changing or reading the data will do so from the same instance.
Certainly, there may be some aspects of the code or principles from this chapter that may be still unclear to you but with repeated use, you can make them like second nature.
In the next chapter, we are not going to increase the complexity any further. So if all these Fragments and...