public void notifyItemChanged(Object oldItem, Object newItem) { if (mItems != null) { for (ItemInfo itemInfo : mItems) { if (itemInfo.object.equals(oldItem)) { itemInfo.object = newItem; } } } invalidate(); }
public void replaceFragmetns(ViewPager container, Fragment oldFragment, Fragment newFragment) { // ensure getItem returns newFragemtn after calling handleGetItemInbalidated() handleGetItemInbalidated(container, oldFragment, newFragment); startUpdate(container); // remove old fragment if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } int position = getFragmentPosition(oldFragment); while (mSavedState.size() <= position) { mSavedState.add(null); } mSavedState.set(position, null); mFragments.set(position, null); mCurTransaction.remove(oldFragment); // add new fragment while (mFragments.size() <= position) { mFragments.add(null); } mFragments.set(position, newFragment); mCurTransaction.add(container.getId(), newFragment); finishUpdate(container); container.notifyItemChanged(oldFragment, newFragment); } protected abstract void handleGetItemInbalidated(View container, Fragment oldFragment, Fragment newFragment); protected abstract int getFragmentPosition(Fragment fragment);
mAdapter.replaceFragmetns(mViewPager, oldFragment, newFragment);
@Override public Object instantiateItem(View container, int position) { if (position == getCount() - 1) { if (mMailCahcedFragment == null) { return super.instantiateItem(container, position); } else { return mMailCahcedFragment; } } else { return super.instantiateItem(container, position); } } @Override public void destroyItem(View container, int position, Object object) { if (position == getCount() - 1) { } else { super.destroyItem(container, position, object); } }
Source: https://habr.com/ru/post/132406/
All Articles