public int getRealCount() { return mAdapter.getCount(); }
private void populateTabStrip() { final PagerAdapter adapter = mViewPager.getAdapter(); final View.OnClickListener tabClickListener = new TabClickListener(); for (int i = 0; i < adapter.getCount(); i++) { View tabView = null; TextView tabTitleView = null; if (mTabViewLayoutId != 0) { // If there is a custom tab view layout id set, try and inflate it tabView = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip, false); tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId); } if (tabView == null) { tabView = createDefaultTabView(getContext()); } if (tabTitleView == null && TextView.class.isInstance(tabView)) { tabTitleView = (TextView) tabView; } tabTitleView.setText(adapter.getPageTitle(i)); tabView.setOnClickListener(tabClickListener); mTabStrip.addView(tabView); } }
@Override public void notifyDataSetChanged() { mToDestroy = new SparseArray<>(); super.notifyDataSetChanged(); }
mAdapter.unregisterDataSetObserver(mObserver); mAdapter.startUpdate(this); for (int i = 0; i < mItems.size(); i++) { final ItemInfo ii = mItems.get(i); mAdapter.destroyItem(this, ii.position, ii.object); mAdapter.finishUpdate(this); mItems.clear(); removeNonDecorViews(); mObserver = new PagerObserver(); mAdapter.registerDataSetObserver(mObserver); mPopulatePending = false; final boolean wasFirstLayout = mFirstLayout; mFirstLayout = true; mExpectedAdapterCount = mAdapter.getCount(); if (mRestoredCurItem >= 0) { mAdapter.restoreState(mRestoredAdapterState, mRestoredClassLoader); setCurrentItemInternal(mRestoredCurItem, false, true); mRestoredCurItem = -1;
void dataSetChanged() { final int adapterCount = mAdapter.getCount(); mExpectedAdapterCount = adapterCount; boolean needPopulate = mItems.size() < mOffscreenPageLimit * 2 + 1 && for (int i = 0; i < mItems.size(); i++) { final ItemInfo ii = mItems.get(i); final int newPos = mAdapter.getItemPosition(ii.object); mAdapter.startUpdate(this); isUpdating = true; mAdapter.destroyItem(this, ii.position, ii.object); needPopulate = true; mAdapter.finishUpdate(this);
mAdapter.startUpdate(this); final int N = mAdapter.getCount(); final int endPos = Math.min(N - 1, mCurItem + pageLimit); mAdapter.destroyItem(this, pos, ii.object); if (DEBUG) { Log.i(TAG, logDestroyItem(pos, ((View) ii.object))); mAdapter.destroyItem(this, pos, ii.object); if (DEBUG) { Log.i(TAG, logDestroyItem(pos, ((View) ii.object))); mAdapter.destroyItem(this, pos, ii.object); if (DEBUG) { Log.i(TAG, logDestroyItem(pos, ((View) ii.object))); mAdapter.destroyItem(this, pos, ii.object); if (DEBUG) { Log.i(TAG, logDestroyItem(pos, ((View) ii.object))); mAdapter.setPrimaryItem(this, mCurItem, curItem != null ? curItem.object : null); mAdapter.finishUpdate(this);
private void calculatePageOffsets(ItemInfo curItem, int curIndex, ItemInfo oldCurInfo) { final int N = mAdapter.getCount(); if (isHorizontal()) { final int width = getClientWidth(); offset += mAdapter.getPageWidth(pos) + marginOffset; pos++; offset -= mAdapter.getPageWidth(pos) + marginOffset; pos--; final ItemInfo ii = mItems.get(i); while (pos > ii.position) { offset -= mAdapter.getPageWidth(pos--) + marginOffset; final ItemInfo ii = mItems.get(i); while (pos < ii.position) { offset += mAdapter.getPageWidth(pos++) + marginOffset; offset += mAdapter.getPageWidth(pos) + marginOffset; pos++; offset -= mAdapter.getPageWidth(pos) + marginOffset; pos--; final ItemInfo ii = mItems.get(i); while (pos > ii.position) { offset -= mAdapter.getPageWidth(pos--) + marginOffset; final ItemInfo ii = mItems.get(i);
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(); }
@Nullable CharSequence getPageTitle(int position) { if (mPager == null) return null; final PagerAdapter adapter = mPager.getAdapter(); if (adapter == null) return null; return adapter.getPageTitle(position); } }
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()); }
ItemInfo addNewItem(int position, int index) { ItemInfo ii = new ItemInfo(); ii.position = position; ii.object = mAdapter.instantiateItem(this, position); if (isHorizontal()) { ii.widthFactor = mAdapter.getPageWidth(position); } else { ii.heightFactor = mAdapter.getPageWidth(position); } if (index < 0 || index >= mItems.size()) { mItems.add(ii); } else { mItems.add(index, ii); } return ii; }
@Override public void setPrimaryItem(@NonNull ViewGroup container, int position, @NonNull Object object) { mAdapter.setPrimaryItem(container, position, object); }
@NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { int realPosition = (mAdapter instanceof FragmentPagerAdapter || mAdapter instanceof FragmentStatePagerAdapter) ? position : toRealPosition(position); if (mBoundaryCaching) { ToDestroy toDestroy = mToDestroy.get(position); if (toDestroy != null) { mToDestroy.remove(position); return toDestroy.object; } } return mAdapter.instantiateItem(container, realPosition); }
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); }
/** * Override this method if you want to use custom tab layout. * * @param tabLayout TabLayout * @param adapter PagerAdapter * @param position Position of the item * @return TabLayout.Tab */ protected TabLayout.Tab onCreateTab(TabLayout tabLayout, PagerAdapter adapter, int position) { TabLayout.Tab tab = tabLayout.newTab(); tab.setText(adapter.getPageTitle(position)); return tab; }
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); } }
@Override public void setPrimaryItem(ViewGroup container, int position, Object object) { super.setPrimaryItem(container, position, object); //ChatRoom room = rooms.get(position); //room.markAllRead() }
@Override public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) { // Locate the image view at the primary fragment (the ImageFragment that is currently // visible). To locate the fragment, call instantiateItem with the selection position. // At this stage, the method will simply return the fragment at the position and will // not create a new one. Fragment currentFragment = (Fragment) viewPager.getAdapter() .instantiateItem(viewPager, MainActivity.currentPosition); View view = currentFragment.getView(); if (view == null) { return; } // Map the first shared element name to the child ImageView. sharedElements.put(names.get(0), view.findViewById(R.id.image)); } });
@Override public void onPageSelected(int position) { if (mViewpager.getAdapter() == null || mViewpager.getAdapter().getCount() <= 0) { return; } internalPageSelected(position); mLastPosition = position; }
private void initTabs() { content.removeAllViews(); if (viewPager == null) return; final PagerAdapter adapter = viewPager.getAdapter(); if (viewPager.getAdapter() == null) return; if (tabBuilder == null) { tabBuilder = position -> { View tab = inflate(getContext(), R.layout.carbon_tab, null); ((TextView) tab.findViewById(R.id.carbon_tabText)).setText(getViewPager().getAdapter().getPageTitle(position).toString().toUpperCase()); return tab; }; } for (int i = 0; i < adapter.getCount(); i++) { View tab = tabBuilder.getView(i); content.addView(tab, new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.MATCH_PARENT, 1f)); tab.setSelected(i == 0); final int finalI = i; tab.setOnClickListener(__ -> viewPager.setCurrentItem(finalI)); } }