Разница между предпочтениями методов onCreateView и onBindView

В чем разница между методами onCreateView и onBindView в настройках?

В документации говорится, что onBindView:

Привязывает созданный вид к данным для этого Предпочтения. Это хорошее место для захвата ссылок на пользовательские виды в макете и набор свойства на них.

Почему это хорошее место для установки свойств в представлениях в моем макете? В настоящее время я устанавливаю свойства в методе onCreateView, и все работает нормально. По моему опыту, похоже, что оба метода всегда называются вместе. Возможно, есть ситуации, когда вызывается только onBindView?

Ответ 1

onCreateView() предназначен для создания иерархии представления, которая в конечном итоге будет содержать пользовательский интерфейс предпочтений. onBindView() предназначен для привязки фактических данных к этой иерархии представлений, созданной в onCreateView().

Шаблон отделяет создание иерархии View, которая кэшируется, от привязки данных к этой иерархии View. В случае предпочтения onCreateView() вызывается только один раз, но onBindView() вызывается каждый раз, когда пользовательский интерфейс должен загружать представление предпочтений.

Я предполагаю, что ваша текущая настройка работает, потому что вы никогда не изменяете свойства, которые вы задали в настройке. Было бы лучше настроить свойства иерархии View в onBindView(), если это когда-либо должно быть динамическим.

(В стороне, этот шаблон создания создания или привязки View также рассматривается в CursorAdapters, где он только создает достаточное количество просмотров для отображения на экран, но постоянно привязывает эти представления к новым данным.)