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アイテムを移動するときにスクロールを無効にする方法は? 例: 左に移動または右に移動。
どうも