1

OnTouchListener で MotionEvent.ACTION_MOVE を使用する場合、ListView Adapter で 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;
    }

}

コンテナを移動すると、すべてが非常に遅くなります。これは、コンテナーのサイズが変更され、すべてのオブジェクトが再度読み込まれるためです。

そして私の2番目の質問:ListViewアイテムを移動するときにスクロールを無効にする方法は? 例: 左に移動または右に移動。

どうも

4

0 に答える 0