2

我有一个使用从教程中获得的代码的工作 viewpager 示例。本教程由显然是专家的 Lauren Darcey 和 Shane Conder 编写(我是 Android 新手)。代码粘贴在下面。当用户水平滑动时,这段代码正在做的是膨胀(向前)和破坏(向后)。只有5页。似乎将它们全部充气然后让用户在没有充气/破坏的情况下进行所有滑动会更聪明。就像它是一个很大的页面(例如 Windows Phone 7 中的 Panarama 和 Pivot 控件)。

此外,如果其中一个页面上有谷歌地图,则此代码会爆炸。它打击了第二次通货膨胀(还不知道为什么),如果它们都膨胀一次,就不会发生这种情况。

有理由必须这样做吗?有没有按照我建议的方式做的例子?谢谢,加里布莱克利

    private class MyPagerAdapter extends PagerAdapter {

    public int getCount() {
        return 5;
    }

    public Object instantiateItem(View collection, int position) {

        LayoutInflater inflater = (LayoutInflater) collection.getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        int resId = 0;
        switch (position) {
        case 0:
            resId = R.layout.farleft;
            break;
        case 1:
            resId = R.layout.left;
            break;
        case 2:
            resId = R.layout.middle;
            break;
        case 3:
            resId = R.layout.right;
            break;
        case 4:
            resId = R.layout.farright;
            break;
        }

        View view = inflater.inflate(resId, null);

        ((ViewPager) collection).addView(view, 0);

        return view;
    }

    @Override
    public void destroyItem(View arg0, int arg1, Object arg2) {
        ((ViewPager) arg0).removeView((View) arg2);

    }
4

1 回答 1

9

您可以使用ViewPager.setOffscreenPageLimit(int)加载所有屏幕外选项卡。只需通过执行或将其设置为4(总共 5 个,负 1 个可见)。((ViewPager) collection).setOffscreenPageLimit(4);((ViewPager) collection).setOffscreenPageLimit(getCount() - 1);

请记住这对记忆的影响;如果您不小心,加载所有内容会耗尽设备的 RAM。

于 2012-08-16T17:59:10.783 回答