Objaśnienie metody getView () adaptera tablicowego
Czy mógłbyś wyjaśnićgetView()
metoda anArrayAdapter
.
Czytam dokumenty i ma trzy parametry:
position
: Pozycja elementu w zestawie danych adaptera elementu, którego widok chcemy.convertView
: Stary widok do ponownego użycia, jeśli to możliwe. Uwaga: Przed użyciem sprawdź, czy ten widok nie jest pusty i czy jest odpowiedni. Jeśli nie jest możliwe przekonwertowanie tego widoku, aby wyświetlić poprawne dane, ta metoda może utworzyć nowy widok.Listy heterogeniczne mogą określać liczbę typów widoków, dzięki czemu ten widok jest zawsze właściwy (zobacz getViewTypeCount () i getItemViewType (int)).
parent
: Rodzic, do którego ten widok zostanie ostatecznie dołączonyZrozumiałemposition
parametr. Jak mówili, oznacza to pozycję przedmiotu, który został poproszony.
GdzieconvertView
pochodzić z. Widziałem wiele przykładów, w których sprawdzają, czyconvertView
ma wartość null. Jeśli ma wartość null, zawyżają one nowe wystąpienie układu wierszy, wypełniają go i zwracają. Wydaje mi się, że i tak mam głowę, ale jedno wciąż mnie zaskakuje. Jaki jest układ przekazywany przezconvertView
parametr. Czy jeśliresource
parametr przekazywany podczas inicjalizacjiArrayAdapter
? Jest to buforowana kopia ostatniego układu zwrócona przezgetView()
?
I wreszcie. Co robiparent
parametr do. Nie widziałem zbyt wielu przykładów wykorzystujących to. Większość z nich po prostu wykorzystuje / napełnia układ rzędów i zwraca go.
(Pytam, ponieważ mam animację na kliknięcie w moimListView
. konkretnieten, który ma na celu odtworzenie menu szybkiego działania Spotify. Moja animacja była trochę powolna. Po zdiagnozowaniu tego problemu przez chwilę zdałem sobie sprawę, że było to spowodowane tym, że mójgetView()
Wykonanie metody zajmuje trochę czasu, ponieważ nadmuchuję świeży układ wierszy w każdej iteracji. Ktoś zasugerował buforowanie układu wierszy w aViewHolder
podczas gdy inne przykłady wskazują na ponowne użycieconvertView
parametr, tj. tylko zawyżanie układu rzędów, jeśliconvertView
ma wartość null.)