Подтвердить что ты не робот

Некоторая путаница в методе instantiateItem (контейнер ViewGroup, int position) PagerAdapter

public Object instantiateItem(ViewGroup container, int position) {
      ImageView view = new ImageView();
      container.addView(view);
      return view;
}

Я прочитал некоторый пример кода PagerAdapter, и все они пишут метод addview. Это выше простой код, и я знаю, что "return view" используется для возврата представления для отображения. Но что такое   container.addView(вид) делать?

4b9b3361

Ответ 1

Добавление представления в контейнер на самом деле делает его отображаемым на экране. Объект, возвращаемый instantiateItem, является только ключом/идентификатором; просто случается так, что использование фактического представления для этой цели имеет тенденцию быть удобным, если вы не используете что-то вроде Fragment для управления представлением для страницы. (См. Источник для FragmentPagerAdapter для примера.)

Метод PagerAdapter isViewFromObject помогает пейджеру знать, какое представление принадлежит ключу. Если вы просто возвращаете представление в качестве ключевого объекта, вы можете реализовать этот метод тривиально, как:

public boolean isViewFromObject(View view, Object object) {
    return view == object;
}

Ответ 2

В соответствии с комментариями в Source Code of PageAdapter

public abstract Object instantiateItem(View container, int position);    

Создайте страницу для данной позиции. Адаптер отвечает     для добавления представления в контейнер, указанный здесь, хотя это только     должен гарантировать, что это будет сделано к тому времени, когда оно вернется из

Контейнер Содержит View, в котором будет отображаться страница.

Позиция Позиция страницы, которую необходимо создать.

Возвращает объект, представляющий новую страницу. Это не нужно быть просмотром, но может быть другим контейнером страницы.