如何在不影响滚动的情况下将onTouchListener实现为listview项

时间:2014-11-10 12:57:17

标签: android listview ontouchlistener custom-adapter

我的主要活动中有一个列表视图,其中包含全尺寸图像列表。我试图在列表视图的图像视图上实现onTouchListener,以获取用户触摸的点。我通过在自定义适配器的get View方法中为列表视图实现onTouchListener来解决问题。但当我触摸屏幕滚动列表时,它仍然在滚动列表时给我点数。但我不想在滚动列表时调用onTouchListener。我怎么能这样做。

3 个答案:

答案 0 :(得分:1)

你可以尝试这个,这可能有效

    float posX, posY;
    imageView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN){
            posX = event.getX();
            posY = event.getY();
        }
        if (event.getAction() == MotionEvent.ACTION_UP){
            if (((posX >= event.getX() && posX <= event.getX() + 10) || (posX <= event
                        .getX() && posX >= event.getX() - 10))
                        && ((posY >= event.getY() && posY <= event.getY() + 10) || (posY <= event
                                .getY() && posY >= event.getY() - 10))){
                //Do your thing
            }
        }
        return true;
    }
    });

答案 1 :(得分:0)

我认为正确的方法是实施onClickListener而不是onTouchListener

是的,原因是当用户只想滚动View时会触及ListView

答案 2 :(得分:0)

覆盖此方法,并根据您的要求完成。

@Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {

        if (isScrooling) {
            return super.onInterceptTouchEvent(ev);
        } else {
            return false;
        }
    }