如何最好地处理Android ListActivity的fling手势

Joh*_* MD 6 android gestures

ListActivity在主视图中有一个带有a的Android应用程序.该列表包含一个LinearLayout带有TextView隐藏删除按钮的按钮.默认情况下,删除按钮将被隐藏.我想用一个手势来显示按钮.由于stackoverflow上的问题#937313,我能够检测到这种投掷手势.我不清楚如何确定列表中的哪个项目被抛出,因为onTouch监听器会监听ListView.该项不一定被选中,因此无法可靠地使用getSelected*方法.我正在使用,SimpleListAdaptor所以我没有直接访问中的View Objects ListView.

有任何想法吗?

emm*_*mby 14

尝试使用AbsListView.pointToPosition()来确定列表视图中X,Y坐标的列表项.

如果您正在使用#937313中的配方,您应该能够覆盖onFling()更多或更少,如下所示:

@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
    }
}
Run Code Online (Sandbox Code Playgroud)

  • *pointToPosition()*采用int而不是float作为参数,因此使用*Math.round(e1.getX()),Math.round(e1.getY())*而不是直接使用*e1.getX(),e1.的getY()* (2认同)