Java 无休止的ViewPager(非循环)

Java 无休止的ViewPager(非循环),java,android,android-fragments,out-of-memory,Java,Android,Android Fragments,Out Of Memory,我想创建VIEWPER,每个页面都包含唯一的数据(例如,简单的TeXVIEW,从1到1000000的整数),我想让用户看到第一页的数字500000(所以他将在VIEWPER的中间)。我尝试使用带有重写方法的FragmentStatePagerAdapter getCount(){ 返回500000 }和 getItem(int位置){ 返回MyCustomFragment.newInstance(位置) } 然后设置我的viewpager.setCurrentItem(50000,false),

我想创建VIEWPER,每个页面都包含唯一的数据(例如,简单的TeXVIEW,从1到1000000的整数),我想让用户看到第一页的数字500000(所以他将在VIEWPER的中间)。我尝试使用带有重写方法的
FragmentStatePagerAdapter

getCount(){
返回500000
}

getItem(int位置){
返回MyCustomFragment.newInstance(位置)
}

然后设置我的
viewpager.setCurrentItem(50000,false)
,但当我启动应用程序时,它会崩溃,出现OutOfMemory异常。但如果我删除了
viewpager.setCurrentItem(50000,false)
,那么一切都很好,但用户从第一页开始,而不是从50000开始。据我所知,抛出OutOfMemory是因为当我将当前项设置为50000 fragmentadapter tryes时,会加载从1到50000的每个片段,并将它们保存在内存中。那么我怎样才能避免这样的问题呢?也许我应该找到另一个解决方案,但我不知道如何用其他方法解决我的问题

UPD:以下是不起作用的代码:

protected void onCreate(Bundle savedInstanceState) { 

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_one_day_schedule);
        mViewPager = (ViewPager) findViewById(R.id.day_page);
        mViewPager.setAdapter(new SchedulePagerAdapter(getSupportFragmentManager()));

        // Puts user in the middle of viewpager
        mViewPager.setCurrentItem(Integer.MAX_VALUE/2, false);
    }

    public static class SchedulePagerAdapter extends FragmentStatePagerAdapter {

        public SchedulePagerAdapter(FragmentManager fm) {
            super(fm);
        }

        // This doesnt work even with empty fragment
        @Override
        public Fragment getItem(int position) {
            return new Fragment()
        }

        @Override
        public int getCount() {
            // Makes viewpager almost infinite
            return Integer.MAX_VALUE;
        }
    }

尝试覆盖这些方法:

 @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        String title = mTitleList.get(position % mActualTitleListSize);
        return title;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        int virtualPosition = position % mActualTitleListSize;
        return super.instantiateItem(container, virtualPosition);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        int virtualPosition = position % mActualTitleListSize;
        super.destroyItem(container, virtualPosition, object);
    }

尝试调用viewpager.setCurrentItem(50000)设置适配器后,它可以正常工作me@AtefHares这就是我现在所做的。如果你想得到它,你需要在这里展示一些有用的代码help@AtefHares更新问题