【问题标题】:Some confusion on the method instantiateItem(ViewGroup container, int position) of PagerAdapterPagerAdapter 的方法 instantiateItem(ViewGroup container, int position) 有些混淆
【发布时间】:2012-06-06 04:06:51
【问题描述】:
public Object instantiateItem(ViewGroup container, int position) {
      ImageView view = new ImageView();
      container.addView(view);
      return view;
}

我看了一些PagerAdapter的示例代码,他们都写了addview方法。以上是一些简单的代码,我知道“返回视图”用于返回视图以进行显示,但是什么是 容器.addView(视图) 怎么办?

【问题讨论】:

    标签: android adapter android-pageradapter


    【解决方案1】:

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

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

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

    【讨论】:

    • 如果“将视图添加到容器实际上是使它出现在屏幕上的原因。”,“返回视图”是做什么的?感谢您的回答。
    • 是 ViewPager 使用的标识。
    • 这个答案比@hackbod 评论回答了我这么多关于 ViewPager 的公开质疑!谢谢(:
    【解决方案2】:

    根据 cmets 包含在 PageAdapter 的源代码中

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-20
      • 1970-01-01
      相关资源
      最近更新 更多