1

当我在 OnTouchListener 中使用 MotionEvent.ACTION_MOVE 时,有什么方法可以禁用 ListView 适配器中的 getView() 方法?

我需要这样做,因为我尝试用手指移动我的容器(里面是我的 ListView)。我使用这个方法 setLayoutParams:

    private class MyListener implements View.OnTouchListener{

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        final int Y = (int) event.getRawY();

        switch (event.getAction() & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_UP:
                RelativeLayout.LayoutParams paramsUp = (RelativeLayout.LayoutParams) myBar.getLayoutParams();
                paramsUp.topMargin = 0;
                myBar.setLayoutParams(paramsUp);
                break;
            case MotionEvent.ACTION_MOVE:
                RelativeLayout.LayoutParams paramsMove = (RelativeLayout.LayoutParams) myBar.getLayoutParams();
                paramsMove.topMargin = Y - yDelta;

                myBar.setLayoutParams(paramsMove);
                break;
            case MotionEvent.ACTION_DOWN:
                RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) myBar.getLayoutParams();
                yDelta = Y - lParams.leftMargin;
                break;
        }
        //myBar.invalidate();

        return true;
    }

}

当我移动容器时,一切都发生得非常缓慢。这是因为容器改变了它的大小并且所有的对象都被重新加载了。

我的第二个问题:当我移动 ListView 项目时如何禁用滚动?例如:向左移动或向右移动。

谢谢

4

0 回答 0