У відповідь на ваші 3 запитання:
(1) BaseAdapter , згідно з документами Android, - це лише суперклас з декількох типів адаптерів, один з яких є ArrayAdapter. Існує ряд інших адаптерів, які походять від BaseAdapterрізних цілей. Як результат, це не викликає різниці між ефективністю між ними; ви просто отримуєте доступ до іншого набору функцій / методів з різними підкласами.
(2) Ефективність роботи ArrayAdapterзалежить від ефективності того, що ви робите всередині цього класу, тобто обробки растрових зображень та інших даних.
(3) Ви, мабуть, могли б розібратися у способі роботи з ListViewвикористанням адаптера іншого типу, однак, причина ArrayAdapterпрацює в тому, що це зазвичай має сенс, враховуючи, що метою є створення інтерактивного списку. ArrayAdapteПриймає Array, як правило, ArrayListз об'єктів, які вона обробляє інформацію для створення підкладки для ListView. У цьому сенсі налаштування ArrayList-> ArrayAdapter-> ListViewпросто логічно має сенс.