Jaka jest dokładnie funkcja LayoutInflater?
Podczas projektowania w języku XML wszystkie elementy interfejsu użytkownika to tylko tagi i parametry. Zanim będziesz mógł użyć tych elementów UI (np. TextView lub LinearLayout), musisz utworzyć rzeczywiste obiekty odpowiadające tym elementom xml. Do tego służy inflater. Nadmuchiwacz używa tych tagów i odpowiadających im parametrów do tworzenia rzeczywistych obiektów i ustawiania wszystkich parametrów. Następnie możesz uzyskać odwołanie do elementu UI za pomocą findViewById ().
Dlaczego wszystkie artykuły, które przeczytałem, najpierw sprawdzają, czy Convertview ma wartość NULL, czy nie? Co to znaczy, kiedy jest zerowe, a co, kiedy nie jest?
To jest interesujące. Widzisz, getView () jest wywoływana za każdym razem, gdy rysowana jest pozycja na liście. Teraz, zanim element będzie można narysować, należy go utworzyć. Teraz convertView jest w zasadzie ostatnim widokiem używanym do rysowania elementu. W getView () najpierw wypełniasz xml, a następnie używasz findByViewID (), aby uzyskać różne elementy interfejsu użytkownika elementu listitem. Kiedy sprawdzamy (convertView == null) to, co robimy, to sprawdzanie, czy widok jest pusty (dla pierwszego elementu), a następnie go tworzymy, w przeciwnym razie, jeśli już istnieje, użyj go ponownie, nie ma potrzeby ponownego przechodzenia przez proces inflacji . Sprawia, że jest o wiele bardziej wydajny.
Musiałeś również natknąć się na koncepcję ViewHolder w getView (). Dzięki temu lista jest bardziej wydajna. Tworzymy element widoku i przechowujemy odniesienie do wszystkich elementów interfejsu użytkownika, które otrzymaliśmy po zawyżeniu. W ten sposób możemy uniknąć wywoływania licznych funkcji findByViewId () i zaoszczędzić dużo czasu. Ten ViewHolder jest tworzony w warunku (convertView == null) i jest przechowywany w convertView przy użyciu metody setTag (). W pętli else otrzymujemy go z powrotem za pomocą metody getView () i używamy go ponownie.
Jaki parametr nadrzędny akceptuje ta metoda?
Element nadrzędny to ViewGroup, do którego ostatecznie dołączony jest widok utworzony przez getView (). Teraz w twoim przypadku byłby to ListView.
Mam nadzieję że to pomoże :)