I have used a ViewPager with dynamic number of pages getting from server. Also displaying dot images for current poistion of automatic rotating page in viewpager. But after scrolling to last page it stucks and stops rotating page. Please help, I want to rotate it countineously.
final AdCarasouleAdapter adAdapter = new AdCarasouleAdapter(getActivity(), carousels);
adView.setAdapter(adAdapter);
adAdapter.notifyDataSetChanged();
adView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
Log.i(TAG, "onPageSelected " + position);
currentSlideNumber = position;
showCarouselSlide(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
// for rotation
if( carousels.size() > 1 )
rotateCarousel();
rotateCarousel method
private void rotateCarousel() {
if (carouselDaemon != null) {
carouselDaemon.shutdown();
carouselDaemon = null;
}
carouselDaemon = new ScheduledThreadPoolExecutor(1);
// This process will execute immediately, then execute every 3 seconds.
carouselDaemon.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
HomeFragment.this.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
showCarouselSlide(currentSlideNumber);
if (++currentSlideNumber > maxSlides - 1)
currentSlideNumber = 0;
}
});
}
}, 0L, 4000L, TimeUnit.MILLISECONDS);
}
showCarouselSlide method
private void showCarouselSlide(int position){
for (int i = 0; i < carousels.size(); i++) {
int dot = dotsArray[i];
ImageView dotView = (ImageView) view.findViewById(dot);
dotView.setImageResource(R.drawable.dots);
}
Application.currentHomeCarouselSlideNo = position;
try {
ImageView dotSelectedView = (ImageView) view.findViewById(dotsArray[position]);
dotSelectedView.setImageResource(R.drawable.dots_select);
ImageView image = (ImageView) view.findViewById(R.id.carousel_image);
Picasso.with(getActivity()).load(carousels.get(position).getBannerName()).fit().into(image);
}
catch(Exception e) {}
}