Skip to content

Instantly share code, notes, and snippets.

@romannurik
Last active May 1, 2021 10:16
Show Gist options
  • Save romannurik/2980593 to your computer and use it in GitHub Desktop.
Save romannurik/2980593 to your computer and use it in GitHub Desktop.
**BETA** Android 4.0-style "Swipe to Dismiss" sample code
Moved to
https://github.com/romannurik/android-swipetodismiss
@afollestad
Copy link

This is very useful, thanks!

@ameryzhu
Copy link

Pretty good, but requires higher api level 10 and 11.It would be better if it can run on a 2.2 machine.

@mhd-adeeb-masoud
Copy link

Thank you so much

@JoeyZhao317
Copy link

There is a big bug in SwipeDismissListViewTouchListener.java. If user swipe multiple items in a short time, you can find some items view will not be really dismissed, but, the item will be deleted from list...

@JoeyZhao317
Copy link

And, I think you should add ACTION_CANCEL event:
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
//.....
unless, there will be a bug when you hold a view to swipe then rotate the screen of phone, the view will stay where they have been moved and cannot dismiss or be back to the origin position where it was.

@aramiku
Copy link

aramiku commented Jul 7, 2013

Sometimes when you swipe up just to roll the list in the intent to show the itens below, if the swipe go a litle bit aside, the item you put your finger on is deleted. The gesture is interpreted wrong . I sugest a more longer swipe to the side to be interpreted as a swipe to delete/dismiss. Great Job.

@pjbrinck
Copy link

pjbrinck commented Jul 9, 2013

Roman,

Really nice work...

I am experiencing, when also adding an OnItemLongClickListener to the ListView, that SwipeDismissListViewTouchListener is not paused during long clicks. This would be similar to pausing SwipeDismissListViewTouchListener during scrolling.

Would you consider updating SwipeDismissListViewTouchListener to also manage such?

best regards

@MattSkala
Copy link

Thanks, awesome!
And with use of http://nineoldandroids.com/, you can get it working on older versions.

@pjbrinck
Copy link

Roman,

I am working my way thru the code to identify the cause of a "bug"... but having some difficulty getting my head around it. I was hoping we could do this together.

I'm experiencing, when in onItemClick() I call adapter.notifyDataSetChanged(), adapter.getView() is NOT called for the item/position clicked, but is nicely called for all other visible items/positions.

If I omit setting the SwipeDismissListViewTouchListener on the list view (disabling the swipe-remove functionality), adapter.getView() is CERTAINLY called for all visible items, including the clicked item, in the scenario above.

Please help me identify what causes this slightly different behavior.

best regards pjbrinck

@jesdga95
Copy link

@pjbrinck, you probably already fixed it, but I faced this bug today, and fixed it (plus another small bug):

https://gist.github.com/D4rKn3sSyS/6057805

Roman, thank you very much for this snippet, very useful for today's Android UI design.

@tasomaniac
Copy link

I have a problem with CursorLoaders. When you use this with a regular ArrayAdapter, you can remove all the dismissed items and then call notifyDataSetChanged() w/o any problem. When I use SimpleCursorAdapter with CursorLoader and LoaderManager, it automatically detects the changes in the database and update the UI whenever a change occurs. So the result it that there are items going out and coming again and going out again. How can I solve this? Has anyone experienced such problem?

@zagayevskiy
Copy link

Hello! It's very good job. I have a small quastion: How can I disable swipe to one side (for example swipe to left)?

@suzhouliuyan
Copy link

It is very good job.

@vnguyen972
Copy link

So I was trying to use this little library for my list and when I put a list inside a PagerViewer... the swipe won't work, everytime I tried, it just swipe between the pages on the PagerViewer, is there a way to distinguish between them? can you swipe the list item horizontally without the PagerViewer intercepts the swipe and swipe its pages?

@Yougin
Copy link

Yougin commented Apr 17, 2014

Has anyone found a solution for a problem tasomaniac mentioned (SwipeToDismiss and CursorLoader) ?

@tasomaniac
Copy link

@Yougin I haven't tried but this can solve it. You can disable automatic loading of the CursorLoader using a custom CursorLoader. Chris Banes does it in his open-source Photup application. https://github.com/chrisbanes/photup/blob/master/client/src/uk/co/senab/photup/util/PhotupCursorLoader.java

@cornwe19
Copy link

You might want to make a temporary cursor that manually hides the dismissed indices while the updated cursor loads. Something like this https://gist.github.com/cornwe19/6be23fde488c577691d3 might accomplish what you need.

@bishnu371
Copy link

Very good library , i am using it.
Please help me ,How to handle left and right swipe?

Thanks In Advance

@GeeekerAndy
Copy link

Thanks a lot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment