4

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

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

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

4

2 回答 2

2

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

您不要“在 ViewpageIndicator 中设置布局适配器”。您在 a 中设置了PagerAdaptera ViewPager,并且可能将 aViewPagerIndicator与 that 一起使用ViewPager

每个布局都有自己的 Activity。

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

于 2012-08-11T19:26:10.033 回答
2

要扩展 CommonsWare 的出色答案并用代码填充它,供您想象:

如果你有 Jake Wharton 的 ViewPageIndicator 演示项目,你应该有 aTestFragmentAdapter和 a TestFragment。该类TestFragmentAdapter扩展了FragmentPagerAdapter并且TestFragment该类应该扩展 a 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;
            }

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

于 2012-08-12T11:55:58.360 回答