mObserver = new PagerObserver(); mAdapter.registerDataSetObserver(mObserver); mPopulatePending = false; final boolean wasFirstLayout = mFirstLayout;
protected void handleOnAdapterChanged(ViewPager viewPager, PagerAdapter oldAdapter, PagerAdapter newAdapter) { if (mViewPager != viewPager) { return; } if (oldAdapter != null) { oldAdapter.unregisterDataSetObserver(mInternalDataSetObserver); } if (newAdapter != null) { newAdapter.registerDataSetObserver(mInternalDataSetObserver); } setTabsFromPagerAdapter(mTabLayout, newAdapter, mViewPager.getCurrentItem()); }
protected void setupWithViewPager(@NonNull TabLayout tabLayout, @NonNull ViewPager viewPager) { final PagerAdapter adapter = viewPager.getAdapter(); if (adapter == null) { throw new IllegalArgumentException("ViewPager does not have a PagerAdapter set"); } setTabsFromPagerAdapter(tabLayout, adapter, viewPager.getCurrentItem()); viewPager.getAdapter().registerDataSetObserver(mInternalDataSetObserver); viewPager.addOnPageChangeListener(mInternalTabLayoutOnPageChangeListener); viewPager.addOnAdapterChangeListener(mInternalOnAdapterChangeListener); tabLayout.addOnTabSelectedListener(mInternalOnTabSelectedListener); }
private void onViewPagerAdapterChanged(@Nullable PagerAdapter oldAdapter, @Nullable PagerAdapter newAdapter) { if (mView instanceof TabStripView) ((TabStripView) mView).onViewPagerAdapterChanged(oldAdapter, newAdapter); else if (mView instanceof TabStripViewGroup) ((TabStripViewGroup) mView).onViewPagerAdapterChanged(oldAdapter, newAdapter); if (mScrollState == ViewPager.SCROLL_STATE_IDLE) { mPosition = 0; mOffset = 0; if (oldAdapter != null) oldAdapter.unregisterDataSetObserver(this); if (newAdapter != null) newAdapter.registerDataSetObserver(this); if (mPager != null) mPosition = mPager.getCurrentItem(); updateView(true); } }
public void setViewPager(ViewPager viewPager) { this.viewPager = viewPager; viewPager.addOnPageChangeListener(this); setPageCount(viewPager.getAdapter().getCount()); viewPager.getAdapter().registerDataSetObserver(new DataSetObserver() { @Override public void onChanged() { setPageCount(DynamicPageIndicator.this.viewPager.getAdapter().getCount()); } }); setCurrentPageImmediate(); }