Разница между ArrayAdapter и ListAdapter в Android?
Я знаю, что 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?
Спасибо
Ответы
Ответ 1
Это не связано с Android. Но общий вопрос Java.
Когда вы используете ListAdapter
как тип для своей переменной, вы действительно заинтересованы в интерфейсе. Вы не можете быть заинтересованы в вызове определенного метода ArrayAdapter<String>
, недоступного в ListAdapter
. Это связано с тем, что вы просто назначаете адаптер в качестве адаптера списка для представления.
Вы можете использовать точный тип ArrayAdapter<String>
, если вам действительно нужно вызвать некоторые определенные методы.
Все зависит от вашего варианта использования.
Ответ 2
BaseAdapter
Это очень общий адаптер, который позволяет вам делать все, что угодно.
Его базовый класс для всего адаптера.
ArrayAdapter Это более полная реализация, которая хорошо работает для данных в массивах или ArrayLists. Аналогично, существует связанный CursorAdapter, который вы должны использовать, если ваши данные находятся в курсоре. Оба из них расширяют BaseAdapter