2

我在我的项目中使用库“ViewPagerIndicator”。

我在xml中有ViewPager和ViewPagerIndicator,好吧。

我的问题是我无法编写正确的适配器来工作。我已经将它与 Jake Warton 在他的示例中使用的适配器进行了比较,但无法使其正常工作 ViewPager 工作正常,屏幕上看到的 ViewPagerIndicator ......但没有移动。

如果脉冲,例如,在 viewpagerindicator 的第二个项目上,移动 viewpager ...但从不移动 viewpagerindicator

在此处输入图像描述

这是主要的活动代码:

//...
        pager = (ViewPager) findViewById(R.id.pager);

        ViewPagerAdapter adapterViewPager = new ViewPagerAdapter(getSupportFragmentManager());
        adapterViewPager.addFragment(new FRG_home());
        adapterViewPager.addFragment(new Fragment_One());
        adapterViewPager.addFragment(new Fragment_Two());
        adapterViewPager.addFragment(new Fragment_Three());

        pager.setOffscreenPageLimit(5);
        pager.setAdapter(adapterViewPager);

        PageIndicator mIndicator = (TitlePageIndicator)findViewById(R.id.indicator);
        mIndicator.setViewPager(pager);

//...

这是 Jake Wharton 示例中使用的适配器代码:

class TestFragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter {
    protected static final String[] CONTENT = new String[] { "This", "Is", "A", "Test", };
    protected static final int[] ICONS = new int[] {
            R.drawable.ic_launcher,
            R.drawable.ic_launcher,
            R.drawable.ic_launcher,
            R.drawable.ic_launcher
    };

    private int mCount = CONTENT.length;

    public TestFragmentAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return TestFragment.newInstance(CONTENT[position % CONTENT.length]);
    }

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

    @Override
    public CharSequence getPageTitle(int position) {
      return TestFragmentAdapter.CONTENT[position % CONTENT.length];
    }


    public int getIconResId(int index) {
      return ICONS[index % ICONS.length];
    }

    public void setCount(int count) {
        if (count > 0 && count <= 10) {
            mCount = count;
            notifyDataSetChanged();
        }
    }
}

我想使用从主要活动中添加 ViewPager 的片段:

adapterViewPager.addFragment(new FRG_home());
            adapterViewPager.addFragment(new Fragment_One());
            adapterViewPager.addFragment(new Fragment_Two());
            adapterViewPager.addFragment(new Fragment_Three());

这是我的适配器:

public class ViewPagerAdapter extends FragmentPagerAdapter{

    List<Fragment> fragments = null;
    protected static final String[] CONTENT = new String[] { "This", "Is","a","Test", };

    protected static final int[] ICONS = new int[] {
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher,
        R.drawable.ic_launcher
    };
    private int mCount = CONTENT.length;

    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
        fragments = new ArrayList<Fragment>();
    }
    public void addFragment(Fragment fragment){
        fragments.add(fragment);
    }
    @Override
    public Fragment getItem(int arg0) {
        return fragments.get(arg0);
    }
    @Override
    public int getCount() {
        return fragments.size();
    }
    @Override
    public CharSequence getPageTitle(int position) {
        return ViewPagerAdapter.CONTENT[position % CONTENT.length];
    }
}

我尝试了将近两天,但我无法创建正确的适配器来移动 ViewPagerIndicator

感谢您的帮助,在此先感谢

问候。

4

1 回答 1

18

你有没有机会设置OnPageChangeListener一个ViewPager?如果是这样,您不应该将您的设置OnPageChangeListenerViewPager,而是设置为指标本身。

于 2013-04-12T19:55:52.670 回答