Эта техника - предоставление альтернативного макета для использования в строках - очень хорошо справляется с простыми случаями. Однако его недостаточно, если у вас есть более сложные сценарии для строк, например, такие как следующие:
- Не все строки используют одинаковый макет (например, некоторые имеют одну строку текста, другие - две).
- Вам необходимо настроить виджеты в рядах (например, разные значки для разных случаев).
В этих случаях лучшим вариантом будет создание собственного подкласса нужного вам Adapter, переопределение getView() и построение строк самостоятельно. Метод getView() отвечает за возврат View, представляющего строку для заданной позиции в данных адаптера.
Например, давайте переделаем предыдущий код для использования getView(), чтобы иметь разные иконки для разных строк - в данном случае одну иконку для коротких слов и одну для длинных слов (из проекта примера FancyLists/Dynamic на http://apress.com/):
Теория заключается в том, что мы переопределяем getView()