android - SwipeDismissListViewTouchListener in ListView and ViewPager -
i have viewpager contains listfragment
touchlistener
(swipedismisslistviewtouchlistener). modified viewpager
this:
public class customviewpager extends viewpager { public customviewpager(context context, attributeset attrs) { super(context, attrs); } private boolean pagingenabled = true; public void setpagingenabled(boolean enabled) { pagingenabled = enabled; } @override public boolean onintercepttouchevent(motionevent event) { if (!pagingenabled) { return false; // not intercept } return super.onintercepttouchevent(event); } @override public boolean ontouchevent(motionevent event) { if (!pagingenabled) { return false; // not consume } return super.ontouchevent(event); } }
and disable swipe of viewpager
onoptionsitemselected
in listfragment
method.
@override public boolean onoptionsitemselected(menuitem item) { int id = item.getitemid(); if (id == r.id.action_edit) { customviewpager vp = (customviewpager) getactivity().findviewbyid(r.id.pager); vp.setpagingenabled(false); getlistview().requestdisallowintercepttouchevent(true); } return super.onoptionsitemselected(item); } @override public void onviewcreated(view view, bundle savedinstancestate) { super.onviewcreated(view, savedinstancestate); swipedismisslistviewtouchlistener touchlistener = new swipedismisslistviewtouchlistener( getlistview(), new swipedismisslistviewtouchlistener.dismisscallbacks() { @override public boolean candismiss(int position) { return true; } @override public void ondismiss(listview listview, int[] reversesortedpositions) { (int position : reversesortedpositions) { removeitem(position); } } } ); getlistview().setontouchlistener(touchlistener); // setting scroll listener required ensure during listview scrolling, // don't swipes. getlistview().setonscrolllistener(touchlistener.makescrolllistener()); }
the swipe of viewpager
disabled problem can not running swipedismisslistviewtouchlistener
. have tested these answers not work me
nesting android viewpager, swiping listitems inside listview horizontally
viewpager intercepts x-axis ontouch events. how disable?
capture swipe dismiss listview gestures in viewpager
any solution? thanks
your issue should solved in few simple actions.
- remove onintercepttouch() , ontouch() @ viewpager, not needed.
- if im not mistaken u r missing call notifydatasetchange() after loop in ondismiss().
- go swipetouchlistener code , create clause direction enable ceratain direction (think google enable swipe 1 direction). im guessing u r enabling swipe first , last pages, if not think becuase enabling swipe2dismiss middle page bad ux descion.
Comments
Post a Comment