Czy mógłbyś wytłumaczyć metodę .Wyjaśnienie metody getView() dla ArrayAdaptera
Czytam docs i ma trzy parametry:
position
: pozycja elementu w danych adaptera zestaw element, którego widok chcemy.convertView
: Stary widok do ponownego użycia, jeśli to możliwe. Uwaga: Przed użyciem należy sprawdzić, czy ten widok ma wartość inną niż null i odpowiedniego typu. Jeśli nie można przekonwertować tego widoku, aby wyświetlić prawidłowe dane, ta metoda może utworzyć nowy widok.
Niejednorodne listy mogą określać ich liczbę typów widoków, aby ten widok był zawsze prawidłowy (zobacz getViewTypeCount() i getItemViewType (int)).parent
: Takie, że widok zostanie ostatecznie zamocowany do
I rozumieć parametr position
. Tak jak powiedzieli, to oznacza pozycję przedmiotu, o którego opinię zwrócono się.
Skąd pochodzi convertView
. Widziałem wiele przykładów, gdzie sprawdzają, czy convertView
ma wartość null. Jeśli ma wartość NULL, nadyma nową instancję układu wierszy, wypełnia ją i zwraca. Sądzę, że też to zrozumiałem, ale jedna rzecz wciąż mnie niepokoi. Jaki jest układ, który jest przekazywany za pomocą parametru convertView
. Czy jest to the resource
parameter that is passed in when initialising the ArrayAdapter
? Czy jest to kopia w pamięci podręcznej ostatniego układu zwróconego przez getView()
?
I na koniec. Do czego służy parametr parent
. Nie widziałem zbyt wielu przykładów wykorzystujących to. Większość z nich po prostu ponownie wykorzystuje/nadpisuje układ wierszy i zwraca go.
(Pytam bo mam animację na kliknięcie w moim ListView
. Konkretnie this one that aims to replicate Spotify's dropdown quick action menu. Moja animacja jest trochę powolny. Po zdiagnozowaniu tego problemu na chwilę, zdałem sobie sprawę, że było to spowodowane fakt, że moja metoda getView()
zajmuje trochę czasu, aby zakończyć, ponieważ nadpisuję nowy układ wierszy w każdej iteracji. Ktoś zasugerował buforowanie układu wierszy w ViewHolder
, podczas gdy inne przykłady wskazują na ponowne użycie parametru convertView
, tj. tylko nadanie kształtu wierszowi jeśli convertView
ma wartość null.)
To naprawdę fajna odpowiedź! – Tarik
najlepsza odpowiedź tnx –