Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove item listview with Slide - Like Gmail

I am developing an application with a shop list in a listview. I need that when I swipe the item of listview to the right(or left), this item should get deleted from the listview.

I have my listview and only need the function to do it.

Thanks in advance.

like image 261
dmontielfdez Avatar asked Jan 18 '13 12:01

dmontielfdez


3 Answers

This is how I realize this effect. We have a ListView lvSimple and we add onTouchListener to our lvSimple. This is my working code.

float historicX = Float.NaN, historicY = Float.NaN; static final int DELTA = 50; enum Direction {LEFT, RIGHT;} ... ListView lvSimple = (ListView) findViewById(R.id.linLayout); ... lvSimple.setOnTouchListener(new OnTouchListener() {     @Override     public boolean onTouch(View v, MotionEvent event) {          switch (event.getAction()) {             case MotionEvent.ACTION_DOWN:                 historicX = event.getX();                 historicY = event.getY();                 break;              case MotionEvent.ACTION_UP:                 if (event.getX() - historicX < -DELTA) {                     FunctionDeleteRowWhenSlidingLeft();                     return true;                 }                 else if (event.getX() - historicX > DELTA) {                     FunctionDeleteRowWhenSlidingRight();                     return true;                 }                 break;              default:                 return false;         }         return false;     } }); 

where function FunctionDeleteRowWhenSlidingLeft() is calling when when we sliding to the left, FunctionDeleteRowWhenSlidingRight() - to the right respectively. In this function you need paste code for animation.

like image 130
macloving Avatar answered Sep 28 '22 16:09

macloving


Answer by Android-Developer points to Roman Nurik's code in gist.github.com. This code is out of date. He uses this Swipe to Dismiss listener in his open sourced project Dash Clock.

There are some things you should know, before you use the code in Gist.github.com.

  1. The outdated code in gist.Github is very sensitive to touches. If you keep on tapping an item in the ListView, it will be deleted. In the updated code he fixed the fling sensitivity.
  2. This listener doesn't work well if you have dividers declared in ListView. If you want dividers, declare them in the ListItem layout.
  3. This code is still in beta. Caveat emptor.

So I recommend using the updated code. You can find the updated source here.

like image 42
iraSenthil Avatar answered Sep 28 '22 16:09

iraSenthil


Another option you should consider is to use Tim Roes's EnhancedListView library. [Update - 8/1/2015] With the introduction of RecycleView this library has been deprecated.

The aforementioned Roman Nurik's SwipeToDismiss listener requires API level 12 or higher. Jake Wharton ported this code to support all API levels in SwipeToDismissNOA.

Tim Roes extended this library further to support Undo feature as well.

like image 32
Alex Lipov Avatar answered Sep 28 '22 16:09

Alex Lipov