android - CoordinatorLayout with RecyclerView: onScroll -
i have recyclerview have added different actions can performed on list items. particularly, dragdrop , swipedismiss. dragdrop initiated long-press, , swipedismiss initiated swiping. have watch scroll events block actions happening. annoying scrolling switched dragging. before add onscrolllistener handle this.
this did before:
@override public void onscrollstatechanged(recyclerview recyclerview, int newstate) { super.onscrollstatechanged(recyclerview, newstate); if(newstate == recyclerview.scroll_state_idle){ drag.setcurrentaction(idle); } else { drag.setcurrentaction(scroll); } } no longer work
i added coordinatorlayout collapsable toolbars. when scrolling up, drag wont set scroll until toolbar has been collapsed. tried create own behavior, replace current behavior using; @string/appbar_scrolling_view_behavior. removed behaviors wanted toolbar , didn't work notify drag state.
what have tried:
@override public boolean onstartnestedscroll(coordinatorlayout cl, collapsingtoolbarlayout child, view directtargetchild, view target, int nestedscrollaxes) { if (nestedscrollaxes == viewcompat.scroll_axis_vertical) { if (drag.getcurrentaction().ordinal() < scroll.ordinal()) { /* no actions have started , scrolling. set new action */ drag.setcurrentaction(scroll); } return true; } return super.onstartnestedscroll(cl, child, directtargetchild, target, nestedscrollaxes); } @override public void onstopnestedscroll(coordinatorlayout coordinatorlayout, collapsingtoolbarlayout child, view target) { super.onstopnestedscroll(coordinatorlayout, child, target); if (drag.getcurrentaction() == scroll) { drag.setcurrentaction(invalid); } } so question
how listen scroll changes on recycler view being intercepted coordinatorlayout? behavior correct way?
you should instead use itemtouchhelper detailed in this blog post.
it contains methods such as
onmove(recyclerview, viewholder, viewholder)onswiped(viewholder, int)
which allow implement drag , drop swipe dismiss without writing custom behaviors or touch event handling.
Comments
Post a Comment