【问题标题】:What is the role of " isViewFromObject (View view, Object object)" in FragmentStatePagerAdapter?FragmentStatePagerAdapter中“isViewFromObject(View view, Object object)”的作用是什么?
【发布时间】:2018-02-13 20:20:03
【问题描述】:

我在 View Pager 中使用FragmentStatePagerAdapter。如果isViewFromObject (View view, Object object) 返回false,则返回的Fragment 不会显示在屏幕上。这是为什么?
开发人员文档说Determines whether a page View is associated with a specific key object as returned by instantiateItem(ViewGroup, int). This method is required for a PagerAdapter to function properly. 但我不清楚这个定义。

【问题讨论】:

    标签: android android-viewpager


    【解决方案1】:

    instantiateItem(ViewGroup, int) 方法为特定视图返回 Object。当 viewpager 更改页面时,PagerAdapter 实现将 Object 视为 key 值。

    因此,如果我们从instantiateItem(ViewGroup, int) 返回视图本身,那么该页面的key 将成为视图本身。我们可以从isViewFromObject (View view, Object object) 中检查return view == object;,这将始终返回true,我们的页面将显示:

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

    来自https://stackoverflow.com/a/16772250/1994950 帖子的更多见解:

    当您滑动时,ViewPager 从数组中获取视图位置或将其实例化,然后使用适配器方法 public boolean isViewFromObject(View view, Object object) 将此视图与 ViewPager 的子视图进行比较。等于对象的视图在ViewPager 上显示给用户。如果没有视图,则显示空白屏幕。

    这里是ViewPager 方法,用于将视图与对象进行比较:

    ItemInfo infoForChild(View child) {
        for (int i=0; i<mItems.size(); i++) {
            ItemInfo ii = mItems.get(i);
            if (mAdapter.isViewFromObject(child, ii.object)) {
                return ii;
            }
        }
        return null;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多