2017-02-01 24 views
1

私はAndroidスタジオ内で自閉症児のためのタイムテーブル/スケジュールアプリケーションを作成しています。「アクティビティ画像」を使用してその日を整理し、合計5つのアクティビティスロットにドロップ&ドラッグできます'(毎週月曜日、火曜日など)。複数の場所にドロップ&ドラッグ

次のように私は各IMAGELOCATIONと名付けた:

月曜日:1A、1B、1C、1D、1E 火曜日:2A、2B、2C、2D、2E 水曜日:3A、3B、3C、4Dを3E THURDAY:4A、4B、4C、4D、4E 金曜日5A、5B、5C、5D、5E 土曜日:6A、6B、6C、6D、6E 日曜日:図7A、7B、7C、7D、7E

「Activity Image」を場所1Aに配置するようにコードを正常にコーディングしましたが、他の場所でコーディングする方法についてはわかりません。私は以前に他の場所に使用されていたコードをコピーして貼り付けようとしましたが、画像をドロップしてドラッグしたときに、同じイメージをコード化されたすべての場所にコピーしました。

public class NewScheduleActivity extends AppCompatActivity { 

ImageView image1, image2, image3, image4, image5, image6, image7, image8, image9, image10; 
ImageView activityslotlocation1a, activityslotlocation1b, activityslotlocation1c, activityslotlocation1d, activityslotlocation1e; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.newschedulescreen); 


    image1 = (ImageView) findViewById(R.id.imageView1); 
    image2 = (ImageView) findViewById(R.id.imageView2); 
    image3 = (ImageView) findViewById(R.id.imageView3); 
    image4 = (ImageView) findViewById(R.id.imageView4); 
    image5 = (ImageView) findViewById(R.id.imageView5); 
    image6 = (ImageView) findViewById(R.id.imageView6); 
    image7 = (ImageView) findViewById(R.id.imageView7); 
    image8 = (ImageView) findViewById(R.id.imageView8); 
    image9 = (ImageView) findViewById(R.id.imageView9); 
    image10 = (ImageView) findViewById(R.id.imageView10); 

    activityslotlocation1a = (ImageView) findViewById(R.id.activityslot1a); 
    activityslotlocation1b = (ImageView) findViewById(R.id.activityslot1b); 
    activityslotlocation1c = (ImageView) findViewById(R.id.activityslot1c); 
    activityslotlocation1d = (ImageView) findViewById(R.id.activityslot1d); 
    activityslotlocation1e = (ImageView) findViewById(R.id.activityslot1e); 

    image1.setOnLongClickListener(longClickListener); 
    image2.setOnLongClickListener(longClickListener); 
    image3.setOnLongClickListener(longClickListener); 
    image4.setOnLongClickListener(longClickListener); 
    image5.setOnLongClickListener(longClickListener); 
    image6.setOnLongClickListener(longClickListener); 
    image7.setOnLongClickListener(longClickListener); 
    image8.setOnLongClickListener(longClickListener); 
    image9.setOnLongClickListener(longClickListener); 
    image10.setOnLongClickListener(longClickListener); 

    activityslotlocation1a.setOnDragListener(dragListener); 
    activityslotlocation1b.setOnDragListener(dragListener); 
    activityslotlocation1c.setOnDragListener(dragListener); 
    activityslotlocation1d.setOnDragListener(dragListener); 
    activityslotlocation1e.setOnDragListener(dragListener); 

} 

View.OnLongClickListener longClickListener = new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     ClipData data = ClipData.newPlainText("", ""); 
     View.DragShadowBuilder myShadowBuilder = new View.DragShadowBuilder(v); 
     v.startDragAndDrop(data, myShadowBuilder, v, 0); 
     return true; 

    } 
}; 

View.OnDragListener dragListener = new View.OnDragListener() { 

    @Override 
    public boolean onDrag(View v, DragEvent event) { 

     int dragEvent = event.getAction(); 
     final View view = (View) event.getLocalState(); 
     switch (dragEvent) { 

      case DragEvent.ACTION_DRAG_ENTERED: 

       break; 

      case DragEvent.ACTION_DRAG_EXITED: 

       break; 


      case DragEvent.ACTION_DROP: 

       // Location 1A 

       if (view.getId() == R.id.imageView1) { 
        activityslotlocation1a.setImageResource(R.drawable.art); 

       } else if (view.getId() == R.id.imageView2) { 
        activityslotlocation1a.setImageResource(R.drawable.gohome); 

       } else if (view.getId() == R.id.imageView3) { 
        activityslotlocation1a.setImageResource(R.drawable.bedtime); 

       } else if (view.getId() == R.id.imageView4) { 
        activityslotlocation1a.setImageResource(R.drawable.watchamovie); 

       } else if (view.getId() == R.id.imageView5) { 
        activityslotlocation1a.setImageResource(R.drawable.swimmingclass); 

       } else if (view.getId() == R.id.imageView6) { 
        activityslotlocation1a.setImageResource(R.drawable.cooking); 

       } else if (view.getId() == R.id.imageView7) { 
        activityslotlocation1a.setImageResource(R.drawable.blocks); 

       } else if (view.getId() == R.id.imageView8) { 
        activityslotlocation1a.setImageResource(R.drawable.drink); 

       } else if (view.getId() == R.id.imageView9) { 
        activityslotlocation1a.setImageResource(R.drawable.bedtimestory); 

       } else if (view.getId() == R.id.imageView10) { 
        activityslotlocation1a.setImageResource(R.drawable.pizzanight); 
       } 

       //view.animate() 
         //.x(activityslotlocation1a.getX()) 
         //.y(activityslotlocation1a.getY()) 
         //.setDuration(500) 
         //.start(); 

       MediaPlayer mymedia = MediaPlayer.create(NewScheduleActivity.this,R.raw.whoosh); 
       mymedia.start(); 

       break; 
     } 


     return true; 
    } 
}; 

}

+0

ヒント:イメージとアクティビティの場所に2つのarraylistsを作成し、プロセスの初期化とリスナーの割り当てをループします。あなたのコードを短くするために、 – Alex

答えて

0

私はこれを試してみて、少しあなたのコードを変更しましたが、コメントに耳を傾け、少し下のコードをトリミングしてみてください。

private Imageview startview; 

View.OnDragListener dragListener = new View.OnDragListener() { 
@Override 
public boolean onDrag(View v, DragEvent event) { 
    int dragEvent = event.getAction(); 
    final View view = (View) event.getLocalState(); 
    switch (dragEvent) { 
     case DragEvent.ACTION_DRAG_ENTERED: 
      startview = v; 
      break; 
     case DragEvent.ACTION_DRAG_EXITED: 
      break; 
     case DragEvent.ACTION_DROP: 
      if(!startview) break; 
      if (view.getId() == R.id.imageView1) { 
       startview.setImageResource(R.drawable.art); 
      } else if (view.getId() == R.id.imageView2) { 
       startview.setImageResource(R.drawable.gohome); 
      } else if (view.getId() == R.id.imageView3) { 
      startview.setImageResource(R.drawable.bedtime); 
      } else if (view.getId() == R.id.imageView4) { 
       startview.setImageResource(R.drawable.watchamovie); 
      } else if (view.getId() == R.id.imageView5) { 
       startview.setImageResource(R.drawable.swimmingclass); 
      } else if (view.getId() == R.id.imageView6) { 
       startview.setImageResource(R.drawable.cooking); 
      } else if (view.getId() == R.id.imageView7) { 
       startview.setImageResource(R.drawable.blocks); 
      } else if (view.getId() == R.id.imageView8) { 
       startview.setImageResource(R.drawable.drink); 
      } else if (view.getId() == R.id.imageView9) { 
       startview.setImageResource(R.drawable.bedtimestory); 
      } else if (view.getId() == R.id.imageView10) { 
       startview.setImageResource(R.drawable.pizzanight); 
      } 
      startview = null; 
      MediaPlayer mymedia = MediaPlayer.create(NewScheduleActivity.this,R.raw.whoosh); 
      mymedia.start(); 
      break; 
    } 


    return true; 
} 

}

+0

こんにちはアレックス。申し訳ありませんが、私は初心者のビットであることに言及する必要があります....私はあなたのコードを配置すると、私は 'startview = v;'入力されたACTION DRAGの中に、また、ACTION DROP –

+0

の 'if(!startview)'のエラーが表示されます。 – Alex

+0

より直接的な連絡先がありますか?電子メールかもしれない?あなたにスクリーンショットを送ることができますか? –

関連する問題