mAdapter.unregisterDataSetObserver(mObserver); mAdapter.startUpdate(this); for (int i = 0; i < mItems.size(); i++) {
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()); }
private void onDetachedFromViewPager(@NonNull ViewPager pager) { if (mView instanceof TabStripView) ((TabStripView) mView).onDetachedFromViewPager(pager); else if (mView instanceof TabStripViewGroup) ((TabStripViewGroup) mView).onDetachedFromViewPager(pager); pager.removeOnPageChangeListener(this); pager.removeOnAdapterChangeListener(this); final PagerAdapter adapter = pager.getAdapter(); if (adapter != null) { adapter.unregisterDataSetObserver(this); } }
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); } }
/** * Unregister internal listener objects, release object references, etc. * This method should be called in order to avoid memory leaks. */ public void release() { cancelPendingAdjustTabMode(); cancelPendingSetTabsFromPagerAdapter(); cancelPendingUpdateScrollPosition(); if (mInternalOnAdapterChangeListener != null) { mViewPager.removeOnAdapterChangeListener(mInternalOnAdapterChangeListener); mInternalOnAdapterChangeListener = null; } if (mInternalDataSetObserver != null) { mViewPager.getAdapter().unregisterDataSetObserver(mInternalDataSetObserver); mInternalDataSetObserver = null; } if (mInternalOnTabSelectedListener != null) { mTabLayout.removeOnTabSelectedListener(mInternalOnTabSelectedListener); mInternalOnTabSelectedListener = null; } if (mInternalTabLayoutOnPageChangeListener != null) { mViewPager.removeOnPageChangeListener(mInternalTabLayoutOnPageChangeListener); mInternalTabLayoutOnPageChangeListener = null; } mViewPager = null; mTabLayout = null; }