Onfling和OnTouch无法同时使用

5

我有一个可扩展的列表视图。我正在实现在每个项目向左滑动时删除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;
    }

}

作为可扩展的ListView,我在Activity中实现了一些点击功能。
        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却没有被调用。

当我从适配器的onTouch事件函数中返回false时,OnGroupClick会被调用,但OnFling()不会被调用。

要么Fling起作用,要么OnGroupClick起作用,但不能同时起作用。


设置ListView的OnTouchListener并检查其是否正常工作。 - vadher jitendra
1个回答

1

在行的ontouch事件中

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

你返回true,因此在此之后不会再调用任何触摸事件,改为返回false,触摸事件将传递给下一个子视图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接