Onfling и OnTouch не работают вместе

У меня есть расширяемый список. Я осуществляю удаление элемента listItem по левому краю каждого элемента.

Я использую пользовательский адаптер для заполнения элементов списка.

public class InsightsListAdapter extends BaseExpandableListAdapter {
@Override
public View getGroupView(final int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {
    View row = convertView;
    row = inflater_.inflate(R.layout.insight_list_item, null);

    final GestureDetector gdt = new GestureDetector(new GestureListener());
    row.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            swipedViewPosition_=groupPosition;
            swipedView_=v;
            gdt.onTouchEvent(event);
            return true;
        }
    });

    return row;
}

Я использую GestureListener, как показано ниже

private static final int SWIPE_MIN_DISTANCE = 200;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;

private class GestureListener extends SimpleOnGestureListener {

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE) {
            System.out.println("Left swiped--------");
            removeListItem();
            return false; // Right to left
        }  
        return false;
    }

}

Поскольку это расширяемый список, я реализовал некоторые функции щелчков в акте.

        insightList_.setOnGroupClickListener(new OnGroupClickListener() {

            @Override
            public boolean onGroupClick(ExpandableListView parent, View v,
                    int groupPosition, long id) {
                System.out.println("Group clicked---------");
                showClear(true);
                selectedItem_ = null;

                return false;
            }
        });

Но теперь на OnFling начинают звонить. но не OnGroupClick()

Когда я возвращаю false из функции события onTouch из адаптера, вызывается OnGroupClick, но не OnFling().

Либо Fling будет работать, либо OnGroupClick, но не оба одновременно.

1 ответ

На касании событие ряда

row.setOnTouchListener(new OnTouchListener() {[..]

вы возвращаете true, поэтому после этого больше не будет вызываться событие прикосновения, измените значение на false и событие прикосновения будет переходить к следующему дочернему представлению.

Другие вопросы по тегам