@Override protected void onAttachedToWindow() { // See: // https://android.googlesource.com/platform/frameworks/support/+/nougat-release/v4/java/android/support/v4/view/PagerTitleStrip.java#244 super.onAttachedToWindow(); final ViewParent parent = getParent(); if (viewPagerId != -1 && parent instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup) parent; viewPager = (ViewPager) viewGroup.findViewById(viewPagerId); } else if (!(parent instanceof ViewPager)) { throw new IllegalStateException( "ViewPagerIndicator must be a direct child of a ViewPager or Id must be set via viewPagerId."); } else { final ViewPager pager = (ViewPager) parent; viewPager = pager; } final PagerAdapter adapter = viewPager.getAdapter(); viewPager.addOnPageChangeListener(pageListener); viewPager.addOnAdapterChangeListener(pageListener); final PagerAdapter lastAdapter = pagerAdapterRef != null ? pagerAdapterRef.get() : null; updateAdapter(lastAdapter, adapter); }
@SuppressWarnings("ConstantConditions") public void setViewPager(@NonNull ViewPager view) { if (viewPager != null) { viewPager.removeOnPageChangeListener(this); viewPager.removeOnAdapterChangeListener(this); try { viewPager.getAdapter().unregisterDataSetObserver(dataSetObserver); } catch (Exception ignore) { } } if (view.getAdapter() == null) { throw new IllegalStateException("ViewPager does not have adapter instance."); } viewPager = view; viewPager.getAdapter().registerDataSetObserver(dataSetObserver); viewPager.addOnAdapterChangeListener(this); viewPager.addOnPageChangeListener(this); forceLayoutChanges(); }
viewPager.addOnAdapterChangeListener(mAdapterChangeListener);