Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to best handle fling gesture for Android ListActivity

I have an Android app with a ListActivity in the main view. The list contains a LinearLayout with a TextView and a hidden delete Button. The delete Button will be hidden by default. I want to use a fling gesture to show the button. I am able to detect the fling gesture thanks to question #937313 on stackoverflow. It's not clear to me how to determine which item in the list was flung, since the onTouch listener listens to the ListView. The item is not necessarily selected so getSelected* methods can't be used reliably. I am using the SimpleListAdaptor so I don't have direct access to the View Objects in the ListView.

Any ideas?

like image 956
John in MD Avatar asked Aug 27 '09 01:08

John in MD


Video Answer


1 Answers

Try using AbsListView.pointToPosition() to determine the list item for the X,Y coordinate in your list view.

If you're using the recipe from #937313, you should be able to override onFling() more or less as follows:

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
    try {
        Toast.makeText(listAdapter.getItem( listView.pointToPosition( (int) e1.getX(), (int) e1.getY() ).toString() );
        return super.onFling();
    } catch( Exception e ) {
        // do nothing
    }
}
like image 154
emmby Avatar answered Oct 19 '22 12:10

emmby