Объяснение метода getView () объекта ArrayAdapter
Не могли бы вы объяснитьgetView()
методArrayAdapter
.
Я прочитал документы, и у него есть три параметра:
position
: The position of the item within the adapter's data set of
the item whose view we want.
convertView
: The old view to reuse, if possible. Note: You should check that this view is non-null and of an appropriate type before using. If it is not possible to convert this view to display the correct data, this method can create a new view.Heterogeneous lists can specify their number of view types, so that this View is always of the right type (see getViewTypeCount() and getItemViewType(int)).
parent
: The parent that this view will eventually be attached to
Я понялаposition
параметр. Как они сказали, это подразумевает позицию предмета, мнение которого было запрошено.
Где жеconvertView
родом из. Я видел много примеров, когда они проверяли,convertView
нулевой. Если значение равно null, они раздувают новый экземпляр макета строки, заполняют его и возвращают. Думаю, я тоже об этом подумал, но одна вещь все еще сбивает меня с толку. Каков макет, который передается черезconvertView
параметр. Еслиresource
parameter that is passed in when initialising the ArrayAdapter
? Является ли кэшированная копия последнего макета, возвращенногоgetView()
?
И наконец. Что этоparent
параметр сделать. Я не видел слишком много примеров, использующих это. Большинство из них просто повторно используют / раздувают макет строки и возвращают его.
(Я спрашиваю, потому что у меня есть анимация при нажатии наListView
, конкретнотот, который нацелен на репликацию выпадающего меню быстрого действия Spotify, Моя анимация была немного вялой. После некоторой диагностики этой проблемы я понял, что это связано с тем, что мойgetView()
Этот метод занимает немного времени, чтобы завершить создание новой строки в каждой итерации. Кто-то предложил кэшировать макет строки вViewHolder
в то время как другие примеры указывают на повторное использованиеconvertView
параметр, т.е. только раздувание макета строки, еслиconvertView
нулевой.)