Em resposta às suas 3 perguntas:
(1) BaseAdapter , de acordo com os documentos do Android, é apenas uma superclasse de vários tipos de adaptadores, um dos quais é ArrayAdapter
. Existem vários outros adaptadores derivados BaseAdapter
que se adaptam a finalidades diferentes. Como resultado, é improvável que haja alguma diferença de eficiência entre os dois; você apenas obtém acesso a um conjunto diferente de funções / métodos com as várias subclasses.
(2) A eficiência do seu ArrayAdapter
depende da eficiência do que você está fazendo dentro dessa classe, ou seja, o processamento de bitmaps e outros dados.
(3) Você provavelmente poderia descobrir uma maneira de trabalhar ListView
usando um tipo diferente de adaptador; no entanto, o motivo pelo qual ArrayAdapter
funciona é porque geralmente faz sentido, visto que o objetivo é construir uma lista interativa. O ArrayAdapte
pega um Array
, geralmente um ArrayList
de objetos, que então processa para criar as informações de apoio para o ListView
. Nesse sentido, a configuração de ArrayList
-> ArrayAdapter
-> ListView
logicamente faz sentido.