1

私のAndroidアプリケーションには、グリッドレイアウトがあり、その中に5つのリニアレイアウトがあります。4 つの linearlayout にはそれぞれ 1 つのボタンが含まれ、もう 1 つの linearlayout は空です。ボタンを空のlinearlayoutにドロップしたいのですが、linearlayoutが空でない場合、ドロップした後、以前のlinearlayoutの位置を取ります。このコードの使用

 ViewGroup owner = (ViewGroup) view.getParent();    
 LinearLayout pastContainer = (LinearLayout) owner;

ターゲットのlinearlayoutが空でない(子を持っている)場合、ボタンを保持したいlinearlayoutを取得します。このコードを使用して、ターゲットのlinearlayoutの子を取得して空かどうかを確認します

LinearLayout newcontainer = (LinearLayout) v;
int count = newcontainer.getChildCount();

ボタンを空のlinearlayoutにドロップできますが、子を持つlinearlayoutにボタンをドロップしようとするとエラーが発生します。これが私のコードです

private class MyDragListener implements OnDragListener 
{
    @Override
    public boolean onDrag(View v, DragEvent event) 
    {
        int action = event.getAction();
          switch (event.getAction()) {
          case DragEvent.ACTION_DRAG_STARTED:
            // Do nothing
            break;
          case DragEvent.ACTION_DRAG_ENTERED:
            break;
          case DragEvent.ACTION_DRAG_EXITED:
            break;
          case DragEvent.ACTION_DROP:

            View view = (View) event.getLocalState();
            ViewGroup owner = (ViewGroup) view.getParent(); 
            LinearLayout pastContainer = (LinearLayout) owner;
            LinearLayout newcontainer = (LinearLayout) v;
            int count = newcontainer.getChildCount();                           

            if(count==0)
            {
                owner.removeView(view);     
                newcontainer.addView(view);
                view.setVisibility(View.VISIBLE);
            }
            else
            {
                pastContainer.addView(view);
                view.setVisibility(View.VISIBLE);
            }

            break;
          case DragEvent.ACTION_DRAG_ENDED:
          default:
            break;
          }
          return true;
    }             
}

ターゲットのlinearlayoutが空でない(子を持っている)場合、ボタンを前のlinearlayoutに保つにはどうすればよいですか? ありがとう

4

0 に答える 0