list.addOnChildAttachStateChangeListener(new OnChildAttachStateChangeListener() { @Override public void onChildViewAttachedToWindow(View view) {
/** * Attach the tracker. * * @param recyclerView The recyclerview that the EpoxyController has its adapter added to. */ public void attach(@NonNull RecyclerView recyclerView) { attachedRecyclerView = recyclerView; recyclerView.addOnScrollListener(this.listener); recyclerView.addOnLayoutChangeListener(this.listener); recyclerView.addOnChildAttachStateChangeListener(this.listener); setTracker(recyclerView, this); }
private void setupCallbacks() { ViewConfiguration vc = ViewConfiguration.get(mRecyclerView.getContext()); mSlop = vc.getScaledTouchSlop(); mRecyclerView.addItemDecoration(this); mRecyclerView.addOnItemTouchListener(mOnItemTouchListener); mRecyclerView.addOnChildAttachStateChangeListener(this); startGestureDetection(); }
/** * Attaches {@link DragDropHelper} to {@code recyclerView}. If already attached to a {@link RecyclerView}, it * detaches from the previous one. If {@code null} is provided, it detaches from the current {@link RecyclerView}. * * {@link DragDropHelper} uses {@link RecyclerView.ItemDecoration}, {@link RecyclerView.OnItemTouchListener} and * {@link RecyclerView.OnChildAttachStateChangeListener} internally, which are set or removed here. */ public void attach(@Nullable RecyclerView recyclerView, @NonNull Callback callback) { if (mRecyclerView != recyclerView) { if (mRecyclerView != null) { mRecyclerView.removeItemDecoration(this); mRecyclerView.removeOnItemTouchListener(this); mRecyclerView.removeOnChildAttachStateChangeListener(this); } mRecyclerView = recyclerView; if (mRecyclerView != null) { mScrollSpeedMax = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, SCROLL_SPEED_MAX_DP, mRecyclerView.getResources().getDisplayMetrics()); mRecyclerView.addItemDecoration(this, 0); mRecyclerView.addOnItemTouchListener(this); mRecyclerView.addOnChildAttachStateChangeListener(this); } } mCallback = callback; }