ViewPagerIndicator可以工作,但不会移动

时间:2013-04-12 19:34:57

标签: android viewpagerindicator

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

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

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

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

enter image description here

这是主要的活动代码:

//...
        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

我感谢您的帮助,提前致谢

问候。

1 个答案:

答案 0 :(得分:18)

您是否有机会OnPageChangeListener设置ViewPager?如果是这样,您应该将OnPageChangeListener设置为不ViewPager,而是设置为指标本身。