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