If you have many entities to show in a list, it is the best practice to use RecyclerView class.
RecyclerView's adapter class: RecyclerView.Adapter is using ViewHolder pattern which is re-cycling the not visible views when user scrolls the list. This is a way to avoid OOM and a very common method in Android development.
Example here.
Other way to use "plain old" ListView with your own written adapters, but in that way you have to implement ViewHolder pattern on your own. Btw there are plenty tutorials on the internet.
ScrollView is more likely a View for showing constant number of entities, more like the content of your application than showing many data instances. It is the main View for making a screen scrollable, but not "browsable". I hope my explanation is clear on this point.
And about the images: If you download the images and they are not simple drawable resources you can use some image downloader class which is using caching. A good solution would be: Picasso.