我想要創建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需要在這裏,如果你想獲得幫助 –