There are so many apps utilizing ListView in Android. Your feed in a social network, your tasks in a to-do app, even your mail in your favorite email app stored in a ListView. Basically, ListView is a container for a collection of items that can be represented as an array. You should be able to get any item from a collection by its index and get the size of an underlying collection. Also, it would be nice to be able to add new elements to your collection unless you want it to be constant. In my opinion, ArrayList fits this definition perfectly. In ArrayAdapter , they use List as an underlying collection, though, but in some implementations of it ( LinkedList for example) get operation is linear of index you pass to it, so it can be bad for performance. But it's not a reason to reject ArrayAdapter, just be careful with what implementation you pass to it. Custom List Adapter ArrayAdapter by default adapts only strings to TextViews, but we want someth...