ViewPager onPageSelected for first page

android, android-viewpager

Solution

try to use fragments!

public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter() {
        super(getSupportFragmentManager());
    }

    @Override
    public Fragment getItem(int i) {
        Fragment fr = null;
        if (i==0)
           fr = new sec0frag();
        else if (i==1)
           fr = new sec1frag();
        else if (i==2)
           fr = new sec2frag();
        return fr;
    }

    @Override
    public int getCount() {
        return 3;
    }
}

and create 3 fragments classes

e.g. :

    public static class sec0frag extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
                     // here is initialize for first time to view pages.!
        }
    }

Problem

So it appears that when using a ViewPager, the onPageSelected listener does not get called for the first page same issue as this. I have some logic that populates some more expensive UI elements for the currently selected page and this works when page is changed, but `it doesn't work for the first page.` If I set the current item after the listener, the callback gets fired for the first page, but the view has not been initialized yet, so I can't manipulate it: ``` // Inside PagerAdapter.instantiateItem ViewHolder vh = new ViewHolder(); cursor.moveToPosition(position); vh.view = adapter.newView(context, cursor, null); // Set position as tag so we can retrieve it with findViewByTag vh.view.setTag(position); ((ViewPager) collection).addView(vh.view,0); return vh; // Inside MyActivity.onCreate pagerAdapter = new SingleMessagePagerAdapter(this, cursor); pager = (ViewPager)findViewById(R.id.message_pager); pager.setAdapter(pagerAdapter); pager.setOnPageSelectedListener(this); pager.setCurrentItem(selectedItem); // Inside MyActivity.onPageSelected // Retrieve tagged view View view = pager.findViewWithTag(position); ``` Here `view` ends up being null because `PagerAdapter.instantiateItem` has not yet been run. So I guess my question is, at which point in the activity lifecycle can I be certain that the ViewPager has initialized the view? I tried doing this inside `Activity.onAttachedToWindow` and `Activity.onResume` but it appears both of these get fired before `PagerAdapter.instantiateItem`.

Original source