Reputation: 3986
I'm using the library "ViewPagerIndicator" in my project.
I have the ViewPager and ViewPagerIndicator in the xml, all right.
My problem is that I can not write the correct adapter to work. I have compared it with the adapter used by Jake Warton in his examples, but can not get it to work properly The ViewPager works correctly, the ViewPagerIndicator seen on the screen ... but does not move.
If pulse, for example, on the second item of viewpagerindicator, moves the viewpager ... but never moves the viewpagerindicator
This is the main activity code:
//...
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);
//...
This is the adapter code used in the Jake Wharton´s example:
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();
}
}
}
I want to use the fragments that I added the ViewPager from the main activity:
adapterViewPager.addFragment(new FRG_home());
adapterViewPager.addFragment(new Fragment_One());
adapterViewPager.addFragment(new Fragment_Two());
adapterViewPager.addFragment(new Fragment_Three());
And this is my adapter:
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];
}
}
I tried for almost two days, but I can not create the correct adapter to move also ViewPagerIndicator
I appreciate the help, Thanks in advance
Regards.
Upvotes: 2
Views: 1452
Reputation: 10335
Are you by any chance setting an OnPageChangeListener
to the ViewPager
? If so, you should set your OnPageChangeListener
not to the ViewPager
, but to the indicator itself.
Upvotes: 18