/** * Disassociates given {@link View}. If view is not associated, nothing happens. * * @param view View to be disassociated */ public void removeView(final View view) { for (int i = 0; i < mViewList.size(); i++) { final ViewWeakReference reference = mViewList.get(i); final View item = reference.get(); if (item == null || item == view) { // Always remove null references to reduce Set size mViewList.remove(reference); } } }
/** * Associates given {@link View}. If view has been already added, nothing happens. * * @param view View to be associated */ public void addView(final View view) { for (int i = 0; i < mViewList.size(); i++) { final ViewWeakReference reference = mViewList.get(i); final View item = reference.get(); if (item == null) { // Always remove null references to reduce Set size mViewList.remove(reference); } } mViewList.addIfAbsent(new ViewWeakReference(view)); }
@Override public void unscheduleDrawable(final Drawable who, final Runnable what) { for (int i = 0; i < mViewList.size(); i++) { final ViewWeakReference reference = mViewList.get(i); final View view = reference.get(); if (view != null) { view.unscheduleDrawable(who); } else { // Always remove null references to reduce Set size mViewList.remove(reference); } } }