62 lines
2.4 KiB
Java
62 lines
2.4 KiB
Java
package androidx.viewpager2.widget;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Px;
|
|
import androidx.viewpager2.widget.ViewPager2;
|
|
import java.util.ArrayList;
|
|
import java.util.ConcurrentModificationException;
|
|
import java.util.List;
|
|
public final class CompositeOnPageChangeCallback extends ViewPager2.OnPageChangeCallback {
|
|
@NonNull
|
|
private final List<ViewPager2.OnPageChangeCallback> mCallbacks;
|
|
|
|
public CompositeOnPageChangeCallback(int i) {
|
|
this.mCallbacks = new ArrayList(i);
|
|
}
|
|
|
|
private void throwCallbackListModifiedWhileInUse(ConcurrentModificationException concurrentModificationException) {
|
|
throw new IllegalStateException("Adding and removing callbacks during dispatch to callbacks is not supported", concurrentModificationException);
|
|
}
|
|
|
|
public void addOnPageChangeCallback(ViewPager2.OnPageChangeCallback onPageChangeCallback) {
|
|
this.mCallbacks.add(onPageChangeCallback);
|
|
}
|
|
|
|
@Override // androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
|
|
public void onPageScrollStateChanged(int i) {
|
|
try {
|
|
for (ViewPager2.OnPageChangeCallback onPageChangeCallback : this.mCallbacks) {
|
|
onPageChangeCallback.onPageScrollStateChanged(i);
|
|
}
|
|
} catch (ConcurrentModificationException e) {
|
|
throwCallbackListModifiedWhileInUse(e);
|
|
}
|
|
}
|
|
|
|
@Override // androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
|
|
public void onPageScrolled(int i, float f, @Px int i2) {
|
|
try {
|
|
for (ViewPager2.OnPageChangeCallback onPageChangeCallback : this.mCallbacks) {
|
|
onPageChangeCallback.onPageScrolled(i, f, i2);
|
|
}
|
|
} catch (ConcurrentModificationException e) {
|
|
throwCallbackListModifiedWhileInUse(e);
|
|
}
|
|
}
|
|
|
|
@Override // androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
|
|
public void onPageSelected(int i) {
|
|
try {
|
|
for (ViewPager2.OnPageChangeCallback onPageChangeCallback : this.mCallbacks) {
|
|
onPageChangeCallback.onPageSelected(i);
|
|
}
|
|
} catch (ConcurrentModificationException e) {
|
|
throwCallbackListModifiedWhileInUse(e);
|
|
}
|
|
}
|
|
|
|
public void removeOnPageChangeCallback(ViewPager2.OnPageChangeCallback onPageChangeCallback) {
|
|
this.mCallbacks.remove(onPageChangeCallback);
|
|
}
|
|
}
|