0

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) {}
    }
pradip_android
  • 253
  • 3
  • 13

0 Answers0