我想要创建ViewPager,每个页面将包含唯一的数据(例如简单的文本视图,整数从1到1000000),我想让用户看到第一个页面的编号为500000(所以他会在viewpager中间)。我tryed使用FragmentStatePagerAdapter
与overrided方法Endless ViewPager(不循环)
getCount() { return 500000 }
和
getItem(int position) { return MyCustomFragment.newInstance(position) }
,然后把我的viewpager.setCurrentItem(50000, false)
但是当我开始应用程式将其与内存不足的异常崩溃。但如果我删除viewpager.setCurrentItem(50000, false)
然后一切都很好,但用户从第一页开始,而不是50000.据我所知,OutOfMemory被抛出,因为当我将当前项目设置为50000时,fragmentadapter尝试加载从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;
}
}
尝试设置适配器之后调用viewpager.setCurrentItem(50000),它正常工作与我 –
@AtefHares这是我现在 – Leopik
u需要在这里,如果你想获得帮助 –