Sunny
Sunny

Reputation: 7604

How to change data in Fragment for View pager

I am using a view pager with only one fragment. I am doing this as the basic layout of the page would remain the same, only some of the details like text view and images would change and so I am re-using the same fragment for each page in the view pager.

The question is that where and how do i pass the information to the fragment that I am currently on so and so page (ex: page#3). once the fragment has this information, it would be able to adjust its view/layout and display the following information.

could someone please help?

Thanks.

Upvotes: 0

Views: 3703

Answers (2)

saiful103a
saiful103a

Reputation: 1129

When you add fragment dynamically into your viewpager use this way:

 class ParentPagerAdapter extends FragmentPagerAdapter implements ViewPager.OnPageChangeListener {

    private ArrayList<Fragment> fragments;

    public ParentPagerAdapter(FragmentManager fm,
            ArrayList<Fragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }

    @Override
    public Fragment getItem(int position) {

        return this.fragments.get(position);
    }

    @Override
    public int getCount() {

        return fragments.size();
    }

    @Override
    public void onPageScrollStateChanged(int arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageSelected(int position) {
        // TODO Auto-generated method stub
        ((MYFragment)this.fragments.get(position)).updateLayout();
    }

}

Attach instance of adapter as ViewPager's OnPageChangeListener(). Like this mPager.setOnPageChangeListener(myParentPagerAdapter);

Upvotes: 2

tyczj
tyczj

Reputation: 73753

either keep an instance of the fragment once you create it or use

MyFragment myFrag = (MyFragment)getFragmentManager().findFragmentById(r.id.myfragment);

to get the fragment by its id

mPager.setOnPageChangeListener(new OnPageChangeListener(){

        @Override
        public void onPageScrollStateChanged(int state) {

        }

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int currentPage) {
            MyFragment myFrag = (MyFragment)getFragmentManager().findFragmentById(r.id.myfragment);
            myFrag.updateLayout(currentPage);
        }

    });

Upvotes: 0

Related Questions