Страницы

Поиск по вопросам

суббота, 30 марта 2019 г.

Понимание Android adapters

Только сделал старт в изучении android. В общих чертах понимаю что adapter - это что-то, промежуточное между моделью и представлением.
Но помогите лучше понять, что это такое и все его возможности и применения.
П.С. если можно какие-то ресурсы или материалы.


Ответ

Начнем с того, что Adapter это не какой то неведомый абстрактный класс, а один из основных структурных шаблонов проектирования, который описан и разобран максимально подробно.
в общем случае, назначение адаптера - преобразовать один вид информации в другой, без вмешательства в исходное состояние информации.
Известно, что в ООП всё - объект, парадигма объектно-ориентированного программирования подразумевает, что виртуальная программа устроена так же, как и все, что окружает нас в реальной жизни, поэтому наглядным живым примером адаптера будет, как это ни странно - адаптер, приспособление для соединения не соединяемого, например, переходник SVGA - HDMI для подключения старой видеокарты к новому монитору.
Конкретно в Android паттерн Adapter нашел одно из своих применений в формировании различных списков на экране по имеющимся данным. То есть, есть какая то структура упорядоченных данных и ее необходимо отобразить на экране устройства. Структура представляет собой какие то цифры, текст и тому подобное, на экране это все должно быть View - явная несовместимость между источником и приемником. Можно решить эту проблему разными способами, например, предварительно преобразовать данные в подходящее для вывода на экран представление, НО! так мы потеряем исходные данные и при каждом изменении данных потребуется новое преобразование, что выглядит очень сомнительно с точки зрения производительности.
Здесь на помощь и приходит адаптер, который стоит посредником между данными и экраном, преобразуя "на лету" данные в View, не изменяя первые.
Адаптер ПОСЛЕДОВАТЕЛЬНО берет единицу данных, соответствующюю текущей ЗАТРЕБОВАННОЙ виджетом ПОЗИЦИИ одного из айтемов списка и преобразует эту единицу данных в форму, пригодную для отображения на экране - генерирует View. Виджет, отдав адаптеру требуемую позицию, в ответ получает от адаптера визуальное представление, состоящее из помещенных в нем данных и выводит его на экран.
Все возможности и применения адаптеров исходят из вышеизложенного - адаптация одного вида данных к другому. Применение адаптеров, связанных с виджетами, вроде ListView, ограничено преобразованием структурированных данных в отображение на экране, но ничто вам не мешает использовать сам паттерн для решения любых аналогичных преобразований и здесь его применение ограничено только вашей фантазией.

Комментариев нет:

Отправить комментарий