I have fixed this problems a little time ago, this code is a bit based on the answer from Kuffs but I don't get the date in an array because it's a lot of performance to put a lot of days in array.
Summary of code
(1) The code makes a FragmentPager
with around 10.000 pages in it. On the main activity init the app set the current page to the middle(5000).
pager.setAdapter(new BootstrapPagerAdapter(getResources(), getSupportFragmentManager()));
pager.setCurrentItem(5000, false);
pager.post(new Runnable() {
public void run() {
pager.setCurrentItem(5000, false);
}
});
pager.getAdapter().notifyDataSetChanged();
pager.setOffscreenPageLimit(0);
Summary of code (2) in the bootstrappageradapter
The code looks what position the user has scrolled and looks for the date now
DateTime pagerdate = DateTime.now(TimeZone.getDefault());
DateTime days = pagerdate.plusDays(position - 5000);
e.g. user swiped three days next. position is 5003, so the sum is 5003-5000=3 days
The days count easily plus 3 days with date4j library (I highly recommend it!) then I make a new fragment with the date in its bundle!
public class BootstrapPagerAdapter extends FragmentPagerAdapter
{
/**
* Create pager adapter
*
* @param resources
* @param fragmentManager
*/
public BootstrapPagerAdapter(Resources resources, FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public int getCount() {
return 10000;
}
@Override
public int getItemPosition(Object object){
return FragmentStatePagerAdapter.POSITION_NONE;
}
@Override
public Fragment getItem(int position) {
DateTime pagerdate = DateTime.now(TimeZone.getDefault());
DateTime days = pagerdate.plusDays(position - 5000);
Bundle bundle = new Bundle();
bundle.putString("date", days.format("YYYY-MM-DD").toString());
RoosterFragment roosterFragment = new RoosterFragment();
roosterFragment.setArguments(bundle);
return roosterFragment;
}
}
You could fake the endlessly count with more high numbers like
Around the: 1.500.000 days believe me no one is gonna go this far all the way swiping!
I've tried the a lot infinite examples but this is the only working example I think!
Upvote if it worked for you and don't be shy to ask for more examples or help with your app!
However it would be cool if someone got something like a really infinte viewpager without fake counts and so on ;)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…