2014-03-04 3 views
1

В настоящее время у меня есть четыре массива, которые должны заполнять различные элементы в специальной ячейке списка макетов. Я рассмотрел базовые адаптеры и адаптеры массивов. Последнее требует, чтобы входные данные были ArrayList объектов.Адаптер массива по сравнению с базовым адаптером

С точки зрения производительности было бы лучше использовать базовый адаптер или преобразовать текущий набор данных в объект ArrayList, таким образом, используя больше памяти, можно будет использовать?

+0

Хм ... более простые объекты лучше, но иногда они полезны и более проблематичны. Таким образом, есть возможность настраивать объекты в вашем адаптере. Everythink зависит от того, что и что вы хотели бы использовать для этого адаптера. Иногда лучше идти на компромисс с производительностью, когда ваши данные не очень большие. – RMachnik

ответ

1

Пойдите с BaseAdapter. Удаление требования, которое вы используете ArrayList, делает реализацию более гибкой. Единственная дополнительная работа, которую вы должны сделать, - это реализовать несколько базовых методов, таких как getCount() - это, скорее всего, длина вашей коллекции - или getObject() - это, вероятно, объект в любой позиции, в которой вы находитесь в списке. Возможно, вам даже понадобится реализовать свой собственный конструктор, но это просто часть использования ООП. Не ахти какое дело.

Существует не разница в производительности от использования одного адаптера по сравнению с другим. BaseAdapter - суперкласс для нескольких разных типов адаптеров (ArrayAdapter - один из них). Если нет никакой платы, нет смысла не ходить с BaseAdapter. Вы получите точно такой же результат с большей гибкостью по линии.

+0

Почему бы не пойти с ArrayAdapter? можете ли вы это объяснить? Я имею в виду, что такое ограничение в ArrayAdapter? – UnKnown

+0

@UnKnown Нет ничего плохого в ArrayAdapter, если вы знаете, что собираетесь использовать один ArrayList. Вы не можете использовать ArrayAdapter, если данные, которые вы пытаетесь отобразить, не сохраняются в этом формате. Это случается очень много для меня. Поэтому я просто создаю базовый адаптер, который соответствует моим потребностям. – Rarw

+0

но что, если я переопределяю метод getView ArrayAdapter? – UnKnown

0

Если у вас есть все данные при создании адаптера, я бы посоветовал переходить с ArrayAdapter. Это меньше кода, поэтому меньше места для ошибок. Если вы хотите заполнять элементы «на лету», или ваш набор данных может значительно измениться, возможно, вам понадобится дополнительный контроль из вашего собственного адаптера.

Смежные вопросы