Как лучше всего справиться с жестом броска для Android ListActivity - PullRequest
6 голосов
/ 27 августа 2009

У меня есть приложение Android с ListActivity на главном экране. Список содержит LinearLayout с TextView и скрытую кнопку удаления. Кнопка удаления будет скрыта по умолчанию. Я хочу использовать жест броска, чтобы показать кнопку. Я могу обнаружить жест броска благодаря вопросу № 937313 о стекоперемещении. Мне не ясно, как определить, какой элемент в списке был брошен, так как слушатель onTouch слушает ListView. Элемент не обязательно выбран, поэтому методы getSelected * нельзя использовать надежно. Я использую SimpleListAdaptor, поэтому у меня нет прямого доступа к объектам просмотра в ListView.

Есть идеи?

1 Ответ

14 голосов
/ 01 сентября 2009

Попробуйте использовать 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
    }
}
...