Разница между ArrayAdapter и ListAdapter в Android? - PullRequest
16 голосов
/ 14 ноября 2011

Я знаю, что ListAdapter - это интерфейс, а ArrayAdapter - это класс. Таким образом, мы можем только создать экземпляр ArrayAdapter. Я встретил код

ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, songNames);

Но я смог сделать то же самое с

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, songsArray);

Итак, я хочу знать, в каких именно точках нам нужен ListAdapter?

Спасибо

Ответы [ 2 ]

25 голосов
/ 14 ноября 2011

Это не относится к Android. Но общий вопрос Java.

Когда вы используете ListAdapter в качестве типа для вашей переменной, вы действительно заинтересованы в интерфейсе. Возможно, вам неинтересно вызывать какой-то конкретный метод ArrayAdapter<String>, недоступный в ListAdapter. Это в основном потому, что вы просто назначите адаптер в качестве адаптера списка для представления.

Вы можете использовать точный тип ArrayAdapter<String>, если вам действительно нужно вызвать некоторые конкретные методы.

Все зависит от вашего варианта использования.

0 голосов
/ 03 января 2017

BaseAdapter Это очень универсальный адаптер, который позволяет вам делать практически все, что вы хотите. Это базовый класс всех адаптеров.

ArrayAdapter Это более полная реализация, которая хорошо работает для данных в массивах или ArrayLists. Точно так же есть связанный CursorAdapter, который вы должны использовать, если ваши данные находятся в Cursor. Оба они расширяют BaseAdapter

...