关于PagerAdapter的方法instantiateItem(ViewGroup容器,int位置)的一些混淆

时间:2012-06-06 04:06:51

标签: android adapter android-pageradapter

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

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

2 个答案:

答案 0 :(得分:21)

将视图添加到容器实际上是使其显示在屏幕上的原因。 instantiateItem返回的对象只是一个键/标识符;事实上,如果您没有使用类似Fragment之类的东西来管理页面视图,那么为此目的使用实际视图会很方便。 (有关示例,请参阅FragmentPagerAdapter的来源。)

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

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

答案 1 :(得分:1)

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

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

创建给定位置的页面。适配器负责       用于将视图添加到此处给出的容器中,尽管它只是       必须确保在从

返回时完成此操作
  

容器包含该视图的视图。

     

位置要实例化的页面位置。

     

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