Example usage for android.support.v4.view PagerAdapter POSITION_NONE

List of usage examples for android.support.v4.view PagerAdapter POSITION_NONE

Introduction

In this page you can find the example usage for android.support.v4.view PagerAdapter POSITION_NONE.

Prototype

int POSITION_NONE

To view the source code for android.support.v4.view PagerAdapter POSITION_NONE.

Click Source Link

Usage

From source file:com.vincestyling.traversaless.ViewPager.java

void dataSetChanged() {
    // This method only gets called if our observer is attached, so mAdapter is non-null.

    final int itemCount = getItemCount();
    boolean needPopulate = itemCount < 3 && itemCount < mAdapter.getCount();
    boolean isUpdating = false;
    int newCurrItem = -1;

    for (int pos = 0; pos < mItems.size(); pos++) {
        final ItemInfo ii = mItems.get(pos);

        if (ii == null) {
            mItems.remove(pos--);//from   ww w. j av  a  2  s .com
            continue;
        }

        final int newPos = mAdapter.getItemPosition(ii.object);

        // if positions equal, that means PagerAdapter.POSITION_UNCHANGED.
        if (newPos == ii.position)
            continue;

        if (newPos == PagerAdapter.POSITION_NONE) {
            mItems.remove(pos--);

            if (!isUpdating) {
                mAdapter.startUpdate(this);
                isUpdating = true;
            }

            // if page no longer exist, dissmiss it from the FragmentTransaction.
            mAdapter.dismissItem(this, ii.position, ii.object);
            needPopulate = true;

            if (mCurItem == ii.position) {
                // Keep the current item in the valid range
                newCurrItem = Math.max(0, Math.min(mCurItem, mAdapter.getCount() - 1));
            }
            continue;
        }

        if (mCurItem == ii.position) {
            // Our current item changed position. Follow it.
            newCurrItem = newPos;
        }

        ii.position = newPos;
        needPopulate = true;
    }

    // rearrange all items to their right position.
    List<ItemInfo> mTmpItems = new ArrayList<ItemInfo>(mAdapter.getCount());
    for (int pos = 0; pos < mAdapter.getCount(); pos++) {
        // always use null to hold the place.
        ItemInfo ii = null;
        for (ItemInfo item : mItems) {
            if (item.position == pos) {
                ii = item;
                break;
            }
        }
        mTmpItems.add(ii);
    }
    mItems.clear();
    mItems.addAll(mTmpItems);

    // in the same way, synchronize the rearrange collection in Adapter.
    List<Fragment> fragments = new ArrayList<Fragment>(mItems.size());
    for (ItemInfo item : mItems) {
        fragments.add(item != null ? (Fragment) item.object : null);
    }
    mAdapter.rearrangeItems(fragments);

    // we can take the SavedState in future even if fragment position changed.
    mAdapter.rearrangeSavedStates(mItems.size());

    if (isUpdating)
        mAdapter.finishUpdate(this);

    if (newCurrItem >= 0) {
        // TODO This currently causes a jump.
        setCurrentItemInternal(newCurrItem, false, true);
        needPopulate = true;
    }

    if (needPopulate) {
        populate();
        requestLayout();
    }
}

From source file:com.baidu.zhuanche.view.LazyViewPager.java

void dataSetChanged() {
    // This method only gets called if our observer is attached, so mAdapter is non-null.

    boolean needPopulate = mItems.size() < 3 && mItems.size() < mAdapter.getCount();
    int newCurrItem = -1;

    boolean isUpdating = false;
    for (int i = 0; i < mItems.size(); i++) {
        final ItemInfo ii = mItems.get(i);
        final int newPos = mAdapter.getItemPosition(ii.object);

        if (newPos == PagerAdapter.POSITION_UNCHANGED) {
            continue;
        }/*from w  ww.  j ava2s.c  o  m*/

        if (newPos == PagerAdapter.POSITION_NONE) {
            mItems.remove(i);
            i--;

            if (!isUpdating) {
                mAdapter.startUpdate(this);
                isUpdating = true;
            }

            mAdapter.destroyItem(this, ii.position, ii.object);
            needPopulate = true;

            if (mCurItem == ii.position) {
                // Keep the current item in the valid range
                newCurrItem = Math.max(0, Math.min(mCurItem, mAdapter.getCount() - 1));
            }
            continue;
        }

        if (ii.position != newPos) {
            if (ii.position == mCurItem) {
                // Our current item changed position. Follow it.
                newCurrItem = newPos;
            }

            ii.position = newPos;
            needPopulate = true;
        }
    }

    if (isUpdating) {
        mAdapter.finishUpdate(this);
    }

    Collections.sort(mItems, COMPARATOR);

    if (newCurrItem >= 0) {
        // TODO This currently causes a jump.
        setCurrentItemInternal(newCurrItem, false, true);
        needPopulate = true;
    }
    if (needPopulate) {
        populate();
        requestLayout();
    }
}

From source file:com.chenglong.muscle.ui.LazyViewPager.java

void dataSetChanged() {
    // This method only gets called if our observer is attached, so mAdapter
    // is non-null.
    boolean needPopulate = mItems.size() < 3 && mItems.size() < mAdapter.getCount();
    int newCurrItem = -1;
    boolean isUpdating = false;
    for (int i = 0; i < mItems.size(); i++) {
        final ItemInfo ii = mItems.get(i);
        final int newPos = mAdapter.getItemPosition(ii.object);
        if (newPos == PagerAdapter.POSITION_UNCHANGED) {
            continue;
        }//w w  w . ja v a  2 s. co m
        if (newPos == PagerAdapter.POSITION_NONE) {
            mItems.remove(i);
            i--;
            if (!isUpdating) {
                mAdapter.startUpdate(this);
                isUpdating = true;
            }
            mAdapter.destroyItem(this, ii.position, ii.object);
            needPopulate = true;
            if (mCurItem == ii.position) {
                // Keep the current item in the valid range
                newCurrItem = Math.max(0, Math.min(mCurItem, mAdapter.getCount() - 1));
            }
            continue;
        }
        if (ii.position != newPos) {
            if (ii.position == mCurItem) {
                // Our current item changed position. Follow it.
                newCurrItem = newPos;
            }
            ii.position = newPos;
            needPopulate = true;
        }
    }
    if (isUpdating) {
        mAdapter.finishUpdate(this);
    }
    Collections.sort(mItems, COMPARATOR);
    if (newCurrItem >= 0) {
        // TODO This currently causes a jump.
        setCurrentItemInternal(newCurrItem, false, true);
        needPopulate = true;
    }
    if (needPopulate) {
        populate();
        requestLayout();
    }
}

From source file:de.andacaydin.bidirectionalviewpagerlibrary.BiDirectionalViewPager.java

void dataSetChanged() {
    // This method only gets called if our observer is attached, so mAdapter
    // is non-null.

    boolean needPopulate = mItems.isEmpty() && mAdapter.getCount() > 0;
    int newCurrItem = -1;

    for (int i = 0; i < mItems.size(); i++) {
        final ItemInfo ii = mItems.get(i);
        final int newPos = mAdapter.getItemPosition(ii.object);

        if (newPos == PagerAdapter.POSITION_UNCHANGED) {
            continue;
        }// ww w. j  a v a2  s.  c om

        if (newPos == PagerAdapter.POSITION_NONE) {
            mItems.remove(i);
            i--;
            mAdapter.destroyItem(this, ii.position, ii.object);
            needPopulate = true;

            if (mCurItem == ii.position) {
                // Keep the current item in the valid range
                newCurrItem = Math.max(0, Math.min(mCurItem, mAdapter.getCount() - 1));
            }
            continue;
        }

        if (ii.position != newPos) {
            if (ii.position == mCurItem) {
                // Our current item changed position. Follow it.
                newCurrItem = newPos;
            }

            ii.position = newPos;
            needPopulate = true;
        }
    }

    if (newCurrItem >= 0) {
        // TODO This currently causes a jump.
        setCurrentItemInternal(newCurrItem, true, true);
        needPopulate = true;
    }
    if (needPopulate) {
        populate();
        requestLayout();
    }
}

From source file:com.meishai.app.widget.LazyViewPager.java

void dataSetChanged() {
    // This method only gets called if our observer is attached, so mAdapter
    // is non-null.

    boolean needPopulate = mItems.size() < 3 && mItems.size() < mAdapter.getCount();
    int newCurrItem = -1;

    boolean isUpdating = false;
    for (int i = 0; i < mItems.size(); i++) {
        final ItemInfo ii = mItems.get(i);
        final int newPos = mAdapter.getItemPosition(ii.object);

        if (newPos == PagerAdapter.POSITION_UNCHANGED) {
            continue;
        }//w  w  w  .j  a v  a 2  s  . co m

        if (newPos == PagerAdapter.POSITION_NONE) {
            mItems.remove(i);
            i--;

            if (!isUpdating) {
                mAdapter.startUpdate(this);
                isUpdating = true;
            }

            mAdapter.destroyItem(this, ii.position, ii.object);
            needPopulate = true;

            if (mCurItem == ii.position) {
                // Keep the current item in the valid range
                newCurrItem = Math.max(0, Math.min(mCurItem, mAdapter.getCount() - 1));
            }
            continue;
        }

        if (ii.position != newPos) {
            if (ii.position == mCurItem) {
                // Our current item changed position. Follow it.
                newCurrItem = newPos;
            }

            ii.position = newPos;
            needPopulate = true;
        }
    }

    if (isUpdating) {
        mAdapter.finishUpdate(this);
    }

    Collections.sort(mItems, COMPARATOR);

    if (newCurrItem >= 0) {
        setCurrentItemInternal(newCurrItem, false, true);
        needPopulate = true;
    }
    if (needPopulate) {
        populate();
        requestLayout();
    }
}

From source file:beichen.douban.ui.view.LazyViewPager.java

void dataSetChanged() {
    // This method only gets called if our observer is attached, so mAdapter
    // is non-null.

    boolean needPopulate = mItems.size() < 3 && mItems.size() < mAdapter.getCount();
    int newCurrItem = -1;

    boolean isUpdating = false;
    for (int i = 0; i < mItems.size(); i++) {
        final ItemInfo ii = mItems.get(i);
        final int newPos = mAdapter.getItemPosition(ii.object);

        if (newPos == PagerAdapter.POSITION_UNCHANGED) {
            continue;
        }/*from   www .  j a v  a  2 s .  com*/

        if (newPos == PagerAdapter.POSITION_NONE) {
            mItems.remove(i);
            i--;

            if (!isUpdating) {
                mAdapter.startUpdate(this);
                isUpdating = true;
            }

            mAdapter.destroyItem(this, ii.position, ii.object);
            needPopulate = true;

            if (mCurItem == ii.position) {
                // Keep the current item in the valid range
                newCurrItem = Math.max(0, Math.min(mCurItem, mAdapter.getCount() - 1));
            }
            continue;
        }

        if (ii.position != newPos) {
            if (ii.position == mCurItem) {
                // Our current item changed position. Follow it.
                newCurrItem = newPos;
            }

            ii.position = newPos;
            needPopulate = true;
        }
    }

    if (isUpdating) {
        mAdapter.finishUpdate(this);
    }

    Collections.sort(mItems, COMPARATOR);

    if (newCurrItem >= 0) {
        // TODO This currently causes a jump.
        setCurrentItemInternal(newCurrItem, false, true);
        needPopulate = true;
    }
    if (needPopulate) {
        populate();
        requestLayout();
    }
}

From source file:com.bowen.hannengclub.view.LazyViewPager.java

void dataSetChanged() {
    // This method only gets called if our observer is attached, so mAdapter
    // is non-null.

    boolean needPopulate = mItems.size() < 3 && mItems.size() < mAdapter.getCount();
    int newCurrItem = -1;

    boolean isUpdating = false;
    for (int i = 0; i < mItems.size(); i++) {
        final ItemInfo ii = mItems.get(i);
        final int newPos = mAdapter.getItemPosition(ii.object);

        if (newPos == PagerAdapter.POSITION_UNCHANGED) {
            continue;
        }//w ww.  jav  a2  s  .  c o  m

        if (newPos == PagerAdapter.POSITION_NONE) {
            mItems.remove(i);
            i--;

            if (!isUpdating) {
                mAdapter.startUpdate(this);
                isUpdating = true;
            }

            mAdapter.destroyItem(this, ii.position, ii.object);
            needPopulate = true;

            if (mCurItem == ii.position) {
                // Keep the current item in the valid range
                newCurrItem = Math.max(0, Math.min(mCurItem, mAdapter.getCount() - 1));
            }
            continue;
        }

        if (ii.position != newPos) {
            if (ii.position == mCurItem) {
                // Our current item changed position. Follow it.
                newCurrItem = newPos;
            }

            ii.position = newPos;
            needPopulate = true;
        }
    }

    if (isUpdating) {
        mAdapter.finishUpdate(this);
    }

    Collections.sort(mItems, COMPARATOR);

    if (newCurrItem >= 0) {
        //  This currently causes a jump.
        setCurrentItemInternal(newCurrItem, false, true);
        needPopulate = true;
    }
    if (needPopulate) {
        populate();
        requestLayout();
    }
}

From source file:com.brantapps.viewpagerindicator.vertical.VerticalViewPager.java

void dataSetChanged() {
    // This method only gets called if our observer is attached, so mAdapter is non-null.

    boolean needPopulate = mItems.size() < mOffscreenPageLimit * 2 + 1 && mItems.size() < mAdapter.getCount();
    int newCurrItem = mCurItem;

    boolean isUpdating = false;
    for (int i = 0; i < mItems.size(); i++) {
        final ItemInfo ii = mItems.get(i);
        final int newPos = mAdapter.getItemPosition(ii.object);

        if (newPos == PagerAdapter.POSITION_UNCHANGED) {
            continue;
        }/*from w  ww  .j a v a2 s . c  o  m*/

        if (newPos == PagerAdapter.POSITION_NONE) {
            mItems.remove(i);
            i--;

            if (!isUpdating) {
                mAdapter.startUpdate(this);
                isUpdating = true;
            }

            mAdapter.destroyItem(this, ii.position, ii.object);
            needPopulate = true;

            if (mCurItem == ii.position) {
                // Keep the current item in the valid range
                newCurrItem = Math.max(0, Math.min(mCurItem, mAdapter.getCount() - 1));
                needPopulate = true;
            }
            continue;
        }

        if (ii.position != newPos) {
            if (ii.position == mCurItem) {
                // Our current item changed position. Follow it.
                newCurrItem = newPos;
            }

            ii.position = newPos;
            needPopulate = true;
        }
    }

    if (isUpdating) {
        mAdapter.finishUpdate(this);
    }

    Collections.sort(mItems, COMPARATOR);

    if (needPopulate) {
        // Reset our known page widths; populate will recompute them.
        final int childCount = getChildCount();
        for (int i = 0; i < childCount; i++) {
            final View child = getChildAt(i);
            final LayoutParams lp = (LayoutParams) child.getLayoutParams();
            if (!lp.isDecor) {
                lp.heightFactor = 0.f;
            }
        }

        setCurrentItemInternal(newCurrItem, false, true);
        requestLayout();
    }
}

From source file:android.improving.utils.views.cardsview.OrientedViewPager.java

void dataSetChanged() {
    // This method only gets called if our observer is attached, so mAdapter is non-null.

    final int adapterCount = mAdapter.getCount();
    mExpectedAdapterCount = adapterCount;
    boolean needPopulate = mItems.size() < mOffscreenPageLimit * 2 + 1 && mItems.size() < adapterCount;
    int newCurrItem = mCurItem;

    boolean isUpdating = false;
    for (int i = 0; i < mItems.size(); i++) {
        final ItemInfo ii = mItems.get(i);
        final int newPos = mAdapter.getItemPosition(ii.object);

        if (newPos == PagerAdapter.POSITION_UNCHANGED) {
            continue;
        }//from  w ww  . j  a va 2 s  .  c  o m

        if (newPos == PagerAdapter.POSITION_NONE) {
            mItems.remove(i);
            i--;

            if (!isUpdating) {
                mAdapter.startUpdate(this);
                isUpdating = true;
            }

            mAdapter.destroyItem(this, ii.position, ii.object);
            needPopulate = true;

            if (mCurItem == ii.position) {
                // Keep the current item in the valid range
                newCurrItem = Math.max(0, Math.min(mCurItem, adapterCount - 1));
                needPopulate = true;
            }
            continue;
        }

        if (ii.position != newPos) {
            if (ii.position == mCurItem) {
                // Our current item changed position. Follow it.
                newCurrItem = newPos;
            }

            ii.position = newPos;
            needPopulate = true;
        }
    }

    if (isUpdating) {
        mAdapter.finishUpdate(this);
    }

    Collections.sort(mItems, COMPARATOR);

    if (needPopulate) {
        // Reset our known page widths; populate will recompute them.
        final int childCount = getChildCount();
        for (int i = 0; i < childCount; i++) {
            final View child = getChildAt(i);
            final LayoutParams lp = (LayoutParams) child.getLayoutParams();
            if (!lp.isDecor) {
                lp.heightFactor = 0.f;
            }
        }

        setCurrentItemInternal(newCurrItem, false, true);
        requestLayout();
    }
}

From source file:com.tunebrains.views.InfiniteViewPager.java

void dataSetChanged() {
    // This method only gets called if our observer is attached, so mAdapter is non-null.

    final int adapterCount = mAdapter.getCount();
    mExpectedAdapterCount = adapterCount;
    boolean needPopulate = mItems.size() < mOffscreenPageLimit * 2 + 1 && mItems.size() < adapterCount;
    int newCurrItem = mCurItem;

    boolean isUpdating = false;
    for (int i = 0; i < mItems.size(); i++) {
        final ItemInfo ii = mItems.get(i);
        final int newPos = mAdapter.getItemPosition(ii.object);

        if (newPos == PagerAdapter.POSITION_UNCHANGED) {
            continue;
        }/*ww w .  java  2  s.  co  m*/

        if (newPos == PagerAdapter.POSITION_NONE) {
            mItems.remove(i);
            i--;

            if (!isUpdating) {
                mAdapter.startUpdate(this);
                isUpdating = true;
            }

            mAdapter.destroyItem(this, ii.position, ii.object);
            needPopulate = true;

            if (mCurItem == ii.position) {
                // Keep the current item in the valid range
                newCurrItem = mCurItem;
                needPopulate = true;
            }
            continue;
        }

        if (ii.position != newPos) {
            if (ii.position == mCurItem) {
                // Our current item changed position. Follow it.
                newCurrItem = newPos;
            }

            ii.position = newPos;
            needPopulate = true;
        }
    }

    if (isUpdating) {
        mAdapter.finishUpdate(this);
    }

    Collections.sort(mItems, COMPARATOR);

    if (needPopulate) {
        // Reset our known page widths; populate will recompute them.
        final int childCount = getChildCount();
        for (int i = 0; i < childCount; i++) {
            final View child = getChildAt(i);
            final LayoutParams lp = (LayoutParams) child.getLayoutParams();
            if (!lp.isDecor) {
                lp.widthFactor = 0.f;
            }
        }

        setCurrentItemInternal(newCurrItem, false, true);
        requestLayout();
    }
}