Почему на Android нельзя использовать списки без адаптеров?
Почему на Android нельзя использовать списки без адаптеров?
Потому что Single Responsibility Principle, aka Принцип Единственной Обязанности. Каждый класс должен иметь одну-единственную ответственность. В приведенном вами примере ListView отвечает за то, чтобы компоновать предоставленные ему виджеты в виде списка, а Adapter отвечает за то, чтобы создавать поставляемые виджеты. 
Разделение ответственности приводит к тому, что классы становятся более простыми и менее подверженными ошибкам при внесении в них изменений. Также выделение адаптера в отдельный класс позволяет относительно быстро подменять его реализации - сегодня для того, чтобы поставлять вашему ListView новые виджеты вам нужен ArrayAdapter, так как у вас два десятка элементов, которые вы получаете из сети, и их можно хранить в памяти, а (утрируя) завтра элементов становится две тысячи и в памяти их держать уже не комильфо, соответственно вы решаете прикрутить кеширование элементов в БД, и теперь вам уже нужен CursorAdapter.
Исходя из того же самого принципа, например, в Java ответственность "хранить элементы" возложена на классы, имплементирующие интерфейс Collection, а ответственность "перебирать элементы" - на классы, имплементирующие интерфейс Iterator, хотя можно было бы свалить всё в одну кучу.
Ваш подход не расширяем