Универсальный адаптер ListView

1

Я пытаюсь создать пользовательский Adapter который может обрабатывать любые типы макетов, которые нужно раздувать. По умолчанию я подразумеваю, что любые данные, которые должны быть установлены в адаптере, и любой вид макета может использоваться с Listen Listers для установки для элемента.

Например:

У меня есть список контактов и список стран. Список контактов состоит из четырех элементов в его макете, т.е. изображения, имени, номера лица и контрольной панели. Список стран содержит CountryName (TextView) и флажок.

Можно ли использовать один и тот же адаптер и этот адаптер обрабатывать все виды товаров?

Я хочу, чтобы тиковые изображения были сброшены после нажатия на любой элемент.

  • 0
    Смотрите это
  • 0
    Спасибо за ответ. Но это не то, что я ищу. Это похоже на другие ссылки, которые у меня есть. Позвольте мне предоставить вам несколько лучших: D android.amberfog.com/?p=296 sudarmuthu.com/blog/… Если вы хотите, я могу предоставить вам больше: D ... Но я ищу универсальный адаптер, который может обрабатывать различные виды элементов списка. И мне не нужно жестко кодировать любой макет.
Показать ещё 7 комментариев
Теги:
android-layout
android-adapter
android-listview

1 ответ

3

Если у вас есть список с разными объектами, которые могут быть разных видов и для отображения требуются разные виды. Сделайте это так:

Пусть объект сам определяет представление. Внедрите интерфейс ViewProvider для каждого объекта. Этот интерфейс должен предоставить метод getView() который затем можно вызвать в адаптере.

Теперь адаптер должен только получить элемент из списка, полный ViewProviders и вызвать метод getView для получения представления.

Вам не придется беспокоиться об утилизации с просмотром, поскольку представления хранятся в каждом представлении ViewProvider и создаются только один раз. Обновление полей (если они есть) также может быть сделано на стороне объекта, а не в адаптере. Но вы должны уведомить адаптер об изменении данных, вызвав notifyDataSetChanged()

  • 2
    Спасибо за ответ. Мне нравится идея, но я все еще не уверен, что буду делать это таким образом. Можете ли вы предоставить пример кода? Спасибо :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню