Skip to content

Commit 308b9b1

Browse files
committed
switching infinite adapter on the fly.
1 parent 003fe5c commit 308b9b1

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

app/src/main/java/com/smarteist/imageslider/MainActivity.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import com.smarteist.autoimageslider.IndicatorView.PageIndicatorView;
1010
import com.smarteist.autoimageslider.IndicatorView.animation.type.IndicatorAnimationType;
11+
import com.smarteist.autoimageslider.IndicatorView.draw.controller.DrawController;
1112
import com.smarteist.autoimageslider.SliderAnimations;
1213
import com.smarteist.autoimageslider.SliderView;
1314
import com.smarteist.imageslider.Model.SliderItem;
@@ -41,12 +42,12 @@ protected void onCreate(Bundle savedInstanceState) {
4142
sliderView.setAutoCycle(true);
4243
sliderView.startAutoCycle();
4344

44-
/*sliderView.setOnIndicatorClickListener(new DrawController.ClickListener() {
45+
sliderView.setOnIndicatorClickListener(new DrawController.ClickListener() {
4546
@Override
4647
public void onIndicatorClicked(int position) {
47-
sliderView.setCurrentPagePosition(position);
48+
sliderView.setInfiniteAdapterEnabled(position % 2 == 0);
4849
}
49-
});*/
50+
});
5051

5152
}
5253

autoimageslider/src/main/java/com/smarteist/autoimageslider/SliderPager.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,11 @@ public void setAdapter(PagerAdapter adapter) {
477477
mObserver = new PagerObserver();
478478
}
479479
setAdapterViewPagerObserver(mObserver);
480-
mAdapter.registerDataSetObserver(mObserver);
480+
try {
481+
mAdapter.registerDataSetObserver(mObserver);
482+
} catch (Exception ignored) {
483+
// maybe there is a registered observer
484+
}
481485
mPopulatePending = false;
482486
final boolean wasFirstLayout = mFirstLayout;
483487
mFirstLayout = true;

autoimageslider/src/main/java/com/smarteist/autoimageslider/SliderView.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@
1313
import android.view.View;
1414
import android.view.animation.Interpolator;
1515
import android.widget.FrameLayout;
16+
1617
import androidx.annotation.NonNull;
1718
import androidx.viewpager.widget.PagerAdapter;
19+
1820
import com.smarteist.autoimageslider.IndicatorView.PageIndicatorView;
1921
import com.smarteist.autoimageslider.IndicatorView.animation.type.IndicatorAnimationType;
2022
import com.smarteist.autoimageslider.IndicatorView.animation.type.BaseAnimation;
@@ -214,6 +216,7 @@ public void setSliderAdapter(@NonNull SliderViewAdapter pagerAdapter) {
214216
//registerAdapterDataObserver();
215217
mSliderPager.setAdapter(mInfinitePagerAdapter);
216218
mPagerAdapter.dataSetChangedListener(this);
219+
// set slider on correct position whether its infinite or not.
217220
setCurrentPagePosition(0);
218221
}
219222

@@ -225,12 +228,19 @@ public void setSliderAdapter(@NonNull SliderViewAdapter pagerAdapter, boolean in
225228
this.mIsInfiniteAdapter = infiniteAdapter;
226229
if (!infiniteAdapter) {
227230
this.mPagerAdapter = pagerAdapter;
228-
mSliderPager.setAdapter(pagerAdapter);
231+
this.mSliderPager.setAdapter(pagerAdapter);
229232
} else {
230233
setSliderAdapter(pagerAdapter);
231234
}
232235
}
233236

237+
238+
public void setInfiniteAdapterEnabled(boolean enabled) {
239+
if (mPagerAdapter != null) {
240+
setSliderAdapter(mPagerAdapter, enabled);
241+
}
242+
}
243+
234244
/**
235245
* @return Sliders Pager
236246
*/
@@ -398,6 +408,7 @@ public void setSliderAnimationDuration(int duration, Interpolator interpolator)
398408
}
399409

400410
/**
411+
* This method handles correct position whether slider is on infinite mode or not
401412
* @param position changes position of slider
402413
* items manually.
403414
*/

0 commit comments

Comments
 (0)