private void requestRemeasure() { if (SectionsDebug.ENABLED) { Log.d(SectionsDebug.TAG, "(" + hashCode() + ") requestRemeasure"); } if (mMountedView != null) { mMainThreadHandler.removeCallbacks(mRemeasureRunnable); mMountedView.removeCallbacks(mRemeasureRunnable); ViewCompat.postOnAnimation(mMountedView, mRemeasureRunnable); } else { // We are not mounted but we still need to post this. Just post on the main thread. mMainThreadHandler.removeCallbacks(mRemeasureRunnable); mMainThreadHandler.post(mRemeasureRunnable); } }
/** * {@inheritDoc} */ @Override public void destroy() { RecyclerView contentView = getContentView(); if (contentView != null) { contentView.removeCallbacks(updateRunnable); } super.destroy(); }
/** * {@inheritDoc} */ @Override public void destroy() { RecyclerView contentView = getContentView(); if (contentView != null) { contentView.removeCallbacks(updateRunnable); } super.destroy(); }
private void maybePostUpdateViewportAndComputeRange() { if (mMountedView != null && (mUseSharedLayoutStateFuture || ComponentsConfiguration.insertPostAsyncLayout || mViewportManager.shouldUpdate())) { mMountedView.removeCallbacks(mUpdateViewportRunnable); ViewCompat.postOnAnimation(mMountedView, mUpdateViewportRunnable); } computeRange(mCurrentFirstVisiblePosition, mCurrentLastVisiblePosition); }
/** * {@inheritDoc} */ @Override public void unbindView() { RecyclerView contentView = getContentView(); if (contentView != null && mSwipeItemTouchListener != null) { contentView.removeOnItemTouchListener(mSwipeItemTouchListener); mSwipeItemTouchListener = null; contentView.removeCallbacks(updateRunnable); } super.unbindView(); }
/** * {@inheritDoc} */ @Override public void unbindView() { RecyclerView contentView = getContentView(); if (contentView != null && mSwipeItemTouchListener != null) { contentView.removeOnItemTouchListener(mSwipeItemTouchListener); mSwipeItemTouchListener = null; contentView.removeCallbacks(updateRunnable); } super.unbindView(); }
@Test public void testDoesntRequestRemeasure() { final Size size = new Size(); final int widthSpec = SizeSpec.makeSizeSpec(200, SizeSpec.EXACTLY); final int heightSpec = SizeSpec.makeSizeSpec(200, SizeSpec.EXACTLY); final RecyclerView recyclerView = mock(RecyclerView.class); mRecyclerBinder.mount(recyclerView); mRecyclerBinder.measure(size, widthSpec, heightSpec, mock(EventHandler.class)); assertThat(200).isEqualTo(size.width); final List<ComponentRenderInfo> components = new ArrayList<>(); for (int i = 0; i < 100; i++) { components.add(ComponentRenderInfo.create().component(mock(Component.class)).build()); mRecyclerBinder.insertItemAt(i, components.get(i)); } mRecyclerBinder.notifyChangeSetComplete(true, NO_OP_CHANGE_SET_COMPLETE_CALLBACK); verify(recyclerView, never()).removeCallbacks(mRecyclerBinder.mRemeasureRunnable); verify(recyclerView, never()).postOnAnimation(mRecyclerBinder.mRemeasureRunnable); }
@Test public void testRequestRemeasure() { final Size size = new Size(); final int widthSpec = SizeSpec.makeSizeSpec(200, SizeSpec.AT_MOST); final int heightSpec = SizeSpec.makeSizeSpec(200, SizeSpec.EXACTLY); final RecyclerView recyclerView = mock(RecyclerView.class); mRecyclerBinder.mount(recyclerView); mRecyclerBinder.measure(size, widthSpec, heightSpec, mock(EventHandler.class)); assertThat(0).isEqualTo(size.width); final List<ComponentRenderInfo> components = new ArrayList<>(); for (int i = 0; i < 100; i++) { components.add(ComponentRenderInfo.create().component(mock(Component.class)).build()); mRecyclerBinder.insertItemAt(i, components.get(i)); } mRecyclerBinder.notifyChangeSetComplete(true, NO_OP_CHANGE_SET_COMPLETE_CALLBACK); verify(recyclerView).removeCallbacks(mRecyclerBinder.mRemeasureRunnable); verify(recyclerView).postOnAnimation(mRecyclerBinder.mRemeasureRunnable); }
@Test public void testRequestRemeasureInsertRange() { final Size size = new Size(); final int widthSpec = SizeSpec.makeSizeSpec(200, SizeSpec.AT_MOST); final int heightSpec = SizeSpec.makeSizeSpec(200, SizeSpec.EXACTLY); final RecyclerView recyclerView = mock(RecyclerView.class); mRecyclerBinder.mount(recyclerView); mRecyclerBinder.measure(size, widthSpec, heightSpec, mock(EventHandler.class)); assertThat(0).isEqualTo(size.width); final List<RenderInfo> components = new ArrayList<>(); for (int i = 0; i < 100; i++) { components.add(ComponentRenderInfo.create().component(mock(Component.class)).build()); } mRecyclerBinder.insertRangeAt(0, components); mRecyclerBinder.notifyChangeSetComplete(true, NO_OP_CHANGE_SET_COMPLETE_CALLBACK); verify(recyclerView).removeCallbacks(mRecyclerBinder.mRemeasureRunnable); verify(recyclerView).postOnAnimation(mRecyclerBinder.mRemeasureRunnable); }
@Test public void testRequestRemeasureUpdateRange() { final Size size = new Size(); final int widthSpec = SizeSpec.makeSizeSpec(200, SizeSpec.AT_MOST); final int heightSpec = SizeSpec.makeSizeSpec(200, SizeSpec.EXACTLY); final RecyclerView recyclerView = mock(RecyclerView.class); mRecyclerBinder.mount(recyclerView); mRecyclerBinder.measure(size, widthSpec, heightSpec, mock(EventHandler.class)); assertThat(0).isEqualTo(size.width); final List<RenderInfo> components = new ArrayList<>(); final List<RenderInfo> updatedComponents = new ArrayList<>(); for (int i = 0; i < 100; i++) { components.add(ComponentRenderInfo.create().component(mock(Component.class)).build()); } for (int i = 0; i < 50; i++) { updatedComponents.add(ComponentRenderInfo.create().component(mock(Component.class)).build()); } mRecyclerBinder.insertRangeAt(0, components); mRecyclerBinder.notifyChangeSetComplete(true, NO_OP_CHANGE_SET_COMPLETE_CALLBACK); reset(recyclerView); mRecyclerBinder.updateRangeAt(0, updatedComponents); mRecyclerBinder.notifyChangeSetComplete(true, NO_OP_CHANGE_SET_COMPLETE_CALLBACK); verify(recyclerView).removeCallbacks(mRecyclerBinder.mRemeasureRunnable); verify(recyclerView).postOnAnimation(mRecyclerBinder.mRemeasureRunnable); }
@Test public void testRequestRemeasureUpdateAt() { final Size size = new Size(); final int widthSpec = SizeSpec.makeSizeSpec(200, SizeSpec.AT_MOST); final int heightSpec = SizeSpec.makeSizeSpec(200, SizeSpec.EXACTLY); final RecyclerView recyclerView = mock(RecyclerView.class); mRecyclerBinder.mount(recyclerView); mRecyclerBinder.measure(size, widthSpec, heightSpec, mock(EventHandler.class)); assertThat(0).isEqualTo(size.width); final List<RenderInfo> components = new ArrayList<>(); for (int i = 0; i < 100; i++) { components.add(ComponentRenderInfo.create().component(mock(Component.class)).build()); } mRecyclerBinder.insertRangeAt(0, components); mRecyclerBinder.notifyChangeSetComplete(true, NO_OP_CHANGE_SET_COMPLETE_CALLBACK); reset(recyclerView); for (int i = 0; i < 50; i++) { mRecyclerBinder.updateItemAt( i, ComponentRenderInfo.create().component(mock(Component.class)).build()); } mRecyclerBinder.notifyChangeSetComplete(true, NO_OP_CHANGE_SET_COMPLETE_CALLBACK); verify(recyclerView).removeCallbacks(mRecyclerBinder.mRemeasureRunnable); verify(recyclerView).postOnAnimation(mRecyclerBinder.mRemeasureRunnable); }
private void postOnAnimation() { if (mEatRunOnAnimationRequest) { mReSchedulePostAnimationCallback = true; } else { if (recyclerView != null) { recyclerView.removeCallbacks(this); ViewCompat.postOnAnimation(recyclerView, this); } } } }
void postAutoHide() { if (mRecyclerView != null && mHidingEnabled) { mRecyclerView.removeCallbacks(mHide); mRecyclerView.postDelayed(mHide, mHideDelay); } }
public void stop() { if (recyclerView != null) recyclerView.removeCallbacks(this); mScroller.abortAnimation(); }
@Override public void run() { if (isUserTouchedRightBar) return; if (rightIndicatorLayout.getVisibility() == VISIBLE) { setViewsVisibility(false); } mRecyclerView.removeCallbacks(this); } });
@Override public boolean onClose() { mRecyclerView.removeCallbacks(searchRunnable); mQueryText = null; mAdapter.filter(null); setListShown(true); return false; }
@Override public boolean onClose() { mRecyclerView.removeCallbacks(searchRunnable); mQueryText = null; mAdapter.filter(null); setListShown(true); return false; }
public void stopAutoScroll() { if (mScroller != null && !mScroller.isFinished()) { mRecyclerView.removeCallbacks(mScrollRunnable); mScroller.abortAnimation(); } }
@Override public boolean onClose() { mRecyclerView.removeCallbacks(searchRunnable); mQueryText = null; mAdapter.filter(null); setListShown(true); return false; }
public void startAutoScroll() { if (mRecyclerView == null) return; initScroller(mRecyclerView.getContext()); if (mScroller.isFinished()) { mRecyclerView.removeCallbacks(mScrollRunnable); mScroller.startScroll(0, mScroller.getCurrY(), 0, 5000, 100000); ViewCompat.postOnAnimation(mRecyclerView, mScrollRunnable); } }