No seu caso
CursorAdapter é mais apropriado quando existe um banco de dados porque não carrega todos os registros como ArrayAdapter . Ele carrega apenas os registros visíveis ou os registros que você está consultando. Aqui está a documentação do CursorAdapter:
Adaptador que expõe dados de um Cursor para um widget ListView.
O Cursor deve incluir uma coluna chamada "_id" ou esta classe não funcionará. Além disso, usar MergeCursor com essa classe não funcionará se os cursores mesclados tiverem valores sobrepostos em suas colunas "_id".
A partir do documento do provedor de conteúdo, pode não ser útil para você.
Você não precisa de um provedor para usar um banco de dados SQLite se o uso for inteiramente dentro de seu próprio aplicativo.
Você pode escolher
CursorAdapter sobre ArrayAdapter .