在ViewPager指标中使用多个布局

时间:2012-08-11 13:51:26

标签: android viewpagerindicator

我想知道如何在ViewpageIndicator中设置布局适配器。我有3个布局我想用ViewpageIndicator滚动。每个布局都有自己的活动。

SampleCirclesWithListener类:

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) {
            }

我一直在寻找解决方案的时间。有人可以帮忙吗? 非常感谢你!

2 个答案:

答案 0 :(得分:2)

  

我想知道如何在ViewpageIndicator中设置布局适配器

您没有“在ViewpageIndicator中设置布局适配器”。您在PagerAdapter中设置了ViewPager,并且可能使用ViewPagerIndicator ViewPager

  

每个布局都有自己的活动。

ViewPager不支持活动之间的分页。它支持视图之间的分页,其中这些视图可选地由片段管理(例如,FragmentPagerAdapter)。

答案 1 :(得分:2)

扩展CommonsWare的优秀答案并填写代码供您设想:

如果你有Jake Wharton的ViewPageIndicator演示项目,你应该有一个TestFragmentAdapter和一个TestFragmentTestFragmentAdapter类扩展了 FragmentPagerAdapter TestFragment类应扩展 Fragment 。现在,无法进行分页槽活动,但您可以分页。

创建Fragment并使用片段内的onCreateView()方法将其设置为您的布局:

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

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

现在你的FragmentPagerAdapter中应该有一个名为getItem()的方法。 Switch位置并将其设置为您的片段:

@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;
            }

现在它应该像你想要的那样工作。