Когда getView() в ArrayAdapter вызывается

При создании персонализированного adapter для ListView в android я вижу, что мне нужно создать класс, расширяющий класс ArrayAdapter и реализующий метод getView(..).

Все это нормально, но я хочу знать последовательность вызывающих методов и выполнение. то есть в какой точке кода вызывается getView()?

Ответы

Ответ 1

Из андроидных документов - Объект Adapter действует как мост между AdapterView (например, ListView в вашем случае) и базовые данные для этого представления. Адаптер обеспечивает доступ к элементам данных и также отвечает за создание представления для каждого элемента в наборе данных.

Итак, всякий раз, когда ListView должен отображать определенную строку данных, он запрашивает связанный адаптер, чтобы предоставить представление, соответствующее тому, что данные в этой позиции с помощью метода getView(). Это может происходить всякий раз, когда представление необходимо обновлять на экране (например, во время создания/прокрутки и т.д.).

Как разработчик приложения, вам не нужно беспокоиться о том, в какой момент вызывается getView(), пока вы предоставляете конкретную реализацию getView() в своем адаптере. Убедитесь, что метод эффективен (миниатюры и т.д. Должны быть загружены в фоновый поток) для оптимальной производительности.

Ответ 2

getView() из ArrayAdapter вызывается несколько раз....

  • как при добавлении новой строки...
  • вы прокручиваете вверх и прокрутите список вниз по списку....
  • когда список не изменен.

Ссылка на эту ссылку Пользовательский метод getView от ArrayAdapter, вызываемый несколько раз - сброс динамического значения TextView

Ответ 3

getView(int position, View view, ViewGroup parent) 

вызывается для

List of Objects

для nos элементов с использованием

getItem(int position)

для длины нашего списка

поэтому он называется nos времени, пока весь ваш список не будет выделен макет и данные из списка.