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

我阅读了一些 PagerAdapter 的示例代码,它们都编写了 addview 方法。以上是一些简单的代码,我知道'return view'用于返回视图进行显示,但是container.addView(view)是做什么的?

4

2 回答 2

21

将视图添加到容器实际上是它出现在屏幕上的原因。返回的对象instantiateItem只是一个键/标识符;Fragment碰巧的是,如果您不使用诸如 a 之类的东西来管理页面的视图,那么为此目的使用实际视图往往会很方便。(有关FragmentPagerAdapter示例,请参见源代码。)

PagerAdapter 方法isViewFromObject帮助分页器知道哪个视图属于哪个键。如果您只是将视图作为键对象返回,则可以简单地实现此方法:

public boolean isViewFromObject(View view, Object object) {
    return view == object;
}
于 2012-06-06T04:12:52.273 回答
1

根据评论包含在 PageAdapter 的源代码中

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

为给定位置创建页面。适配器负责将视图添加到此处给出的容器中,尽管它只必须确保在它返回时完成此操作

Container将在其中显示页面的包含视图。

Position 要实例化的页面位置。

返回一个表示新页面的对象。这不需要是视图,但可以是页面的其他容器。

于 2012-06-06T04:21:32.680 回答