0

I am trying to set infinite view Pager(circular Scroll-able tab) using Infinite ViewPager but when I tried to set the adapter

1.It work only from the end side (last Position).

2.It is not working on the start(position 0) side.

3.It repeat the last fragment when scrolled further.

My adapter

 private InfiniteViewPager pager = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

pager = (InfiniteViewPager) findViewById(R.id.pager);
FragmentManager fragmentManager = getSupportFragmentManager();
pager.setAdapter(new MyAdapter(fragmentManager));
pager.setPageTransformer(true, new CubeOutTransformer());
pager.setCurrentItem(2);

}

My adapter class

class MyAdapter extends FragmentPagerAdapter {

public MyAdapter(FragmentManager fm) {
super(fm);
}
public int getActualPosition(int i){
return i < 5? i : 0;
}
@Override
public Fragment getItem(int i) {
Fragment fragment = null;
i = getActualPosition(i);
if (i == 0) {
    fragment = new Albums();
}
if (i == 1) {
    fragment = new Artists();
}
if (i == 2) {
    fragment = new Songs();
}
if (i == 3) {
    fragment = new Genres();
}
if (i == 4) {
    fragment = new Playlists();
}
return fragment;
}

@Override
public int getCount() {
return Integer.MAX_VALUE;
}

@Override
public CharSequence getPageTitle(int position) {
String title = new String();
if (position == 0) {
    return "ALBUMS";
}
if (position == 1) {
    return "ARTISTS";
}
if (position == 4) {
    return "PLAYLIST";
}
if (position == 3) {
    return "GENRES";
}
if (position == 2) {
    return "SONGS";
}
return title;
}
}

I have gone through Infinite Pager Adapter and Mine pager adapter

but when I try to set the adapter inside another adapter I am getting an error in my adapter class. where I am doing wrong and how I can fix the scrolling from both starting and ending.

Neelay Srivastava
  • 965
  • 13
  • 36

1 Answers1

1

You should set adapter like this

MyAdapter adapter=new MyAdapter(fragmentManager); InfinitePagerAdapter myAdapter= new InfinitePagerAdapter(adapter); pager.setAdapter(myAdapter);

Also in your adapter change this code

from this

@Override public int getCount() { return Integer.MAX_VALUE; }

to

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

Sangeet Suresh
  • 2,309
  • 15
  • 19