FragmentStatePagerAdapter does not call getItem

Problem: I have a ViewPager setting with a FragmentStatePagerAdapter that uses a global arraylist to contents its fragments. When I want to update this global array, I simply call the arraylist.add() method, create an instance of the new FragmentStatePagerAdapter and the new ViewPager. However, for some reason, the adapter does not call getItem. Not that this dataset is empty (it isn’t) or something else ... it just doesn't get called. I even installed a log to check it out. Here is my code:

 // Create the adapter that will return a fragment for event SectionsPagerAdapter adapter = new SectionsPagerAdapter(getFragmentManager()); // Set up the ViewPager with the sections adapter. ViewPager pager = (ViewPager) findViewById(R.id.pager); pager.setAdapter(adapter); /** * A FragmentStatePagerAdapter that returns a fragment corresponding to * an index of the global events array */ public class SectionsPagerAdapter extends FragmentStatePagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); } /** * Called to instantiate the fragment for the given page */ @Override public Fragment getItem(int position) { Log.v("Miles", "getItem called"); // getItem is called to instantiate the fragment for the given page. return EventFragment.newInstance(events.get(position)); } /** * Total number of pages (fragments) there are * Given by size of the global events array minus 1 */ @Override public int getCount() { return events.size() - 1; } } 

Are there any problems with this setting? I can verify that the global arraylist has data inside it, but no fragment is created to reflect this.

+6
source share

Source: https://habr.com/ru/post/972840/


All Articles