2011-09-08 11 views
10

Jaka jest różnica między metodami onCreateView i onBindView w preferencji?Różnica między metodami onCreateView Preferencji a onBindView

W dokumentacji jest napisane, że onBindView:

Wiąże utworzony widok na danych dla tej preferencji. Jest to dobre miejsce do przechwytywania odwołań do niestandardowych widoków w layoucie i ustawiania na nich właściwości .

Dlaczego to jest takie dobre miejsce do ustawiania właściwości w widokach w moim układzie? Obecnie ustawiam właściwości w metodzie onCreateView i wszystko wydaje się działać dobrze. Z mojego doświadczenia wynika, że ​​obie metody są zawsze wywoływane razem. Może są pewne sytuacje, gdy wywoływana jest tylko onBindView?

+0

'onCreateView "ograniczasz się do oglądania budowy i przygotowywania się do wiązania. 'onBindView' ograniczasz się do inicjowania widoku na podstawie danych; to jest to, co jest wiążące. Są sytuacje, w przeciwnym razie nie byłyby oddzielnymi metodami, a dokumentacja mówiłaby coś innego. Twój kod działa "przez przypadek". –

+0

escape-llc- Komentarze nie mogą być zaznaczone jako zaakceptowana odpowiedź- Proszę wstawić odpowiedź w formie odpowiedzi zamiast komentarza :) –

+0

Widzę ludzi, którzy zamieszczają komentarze jako odpowiedzi, ale rzadko widzę coś odwrotnego. :-) – davidcesarino

Odpowiedz

7

onCreateView() służy do tworzenia hierarchii widoku, która ostatecznie będzie zawierać interfejs użytkownika preferencji. onBindView() służy do wiązania rzeczywistych danych z tą hierarchią widoku utworzoną w onCreateView().

Wzorzec oddziela tworzenie hierarchii widoku - która jest buforowana - od powiązania danych z tą hierarchią widoku. W przypadku preferencji onCreateView() jest wywoływany tylko raz, ale onBindView() jest wywoływane za każdym razem, gdy interfejs użytkownika musi załadować widok preferencji.

Zgaduję, że twoja obecna konfiguracja działa, ponieważ nigdy nie zmieniasz właściwości ustawionych w preferencji. Byłoby lepiej ustawić właściwości hierarchii widoku w onBindView(), na wypadek, gdyby kiedykolwiek musiała być dynamiczna.

(Tak na marginesie, to w porównaniu z wiązaniami Zobacz stworzenie wzornictwo widoczny jest również w CursorAdapters, gdzie tylko tworzy wystarczającej liczby wyświetleń, aby wyświetlić na ekranie, ale jest stale wiązania tych poglądów do nowych danych.)

Powiązane problemy