user1330645
user1330645

Reputation:

Use multiple Layouts in ViewPageIndicator

I would like to know how to set an Layout Adapter in ViewpageIndicator. I have 3 Layout I would like to scroll trough with the ViewpageIndicator. And every layout has its own Activity.

the SampleCirclesWithListener class:

public class SampleCirclesWithListener extends BaseSampleActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.simple_circles);

        mAdapter = new TestFragmentAdapter(getSupportFragmentManager());

        mPager = (ViewPager)findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);

        mIndicator = (CirclePageIndicator)findViewById(R.id.indicator);
        mIndicator.setViewPager(mPager);

        //We set this on the indicator, NOT the pager
        mIndicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            public void onPageSelected(int position) {
                Toast.makeText(SampleCirclesWithListener.this, "Changed to page " + position, Toast.LENGTH_SHORT).show();
            }

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

I have been searching for hours for a Solution. Can somebody help? Thank you very much!

Upvotes: 4

Views: 346

Answers (2)

Ahmad
Ahmad

Reputation: 72643

To extend CommonsWare's great answer and fill it with code for you to imagine:

If you have Jake Wharton's Demo Project of the ViewPageIndicator, you should have a TestFragmentAdapter and a TestFragment. The TestFragmentAdapter class extends the FragmentPagerAdapter and the TestFragment class should extend a Fragment. Now paging trough Activities is not possible, but you can page trough fragments.

Create a Fragment and set it to your layout with the onCreateView() method inside your fragment:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {

        return inflater.inflate(R.layout.layout, container, false);
    }

Now in your FragmentPagerAdapter there sould be a method called getItem(). Switch the Position and set it to your Fragment:

@Override
            public Fragment getItem(int position) {
                switch(position){
                case 0:
                    TestFragment fragment = new TestFragment();  

                    return fragment;

                case 1:
                            TestFragment2 fragment2 = new TestFragment2();  
                    return fragment2;

                }

                return defaultFragment fragment3 = new defaultFragment();  
                    return fragment3;
            }

Now it should work like you want it to.

Upvotes: 2

CommonsWare
CommonsWare

Reputation: 1007484

I would like to know how to set an Layout Adapter in ViewpageIndicator

You do not "set an Layout Adapter in ViewpageIndicator". You set a PagerAdapter in a ViewPager, and perhaps use a ViewPagerIndicator with that ViewPager.

And every layout has its own Activity.

ViewPager does not support paging between activities. It supports paging between views, where those views are optionally managed by a fragment (e.g., FragmentPagerAdapter).

Upvotes: 2

Related Questions