2017-02-01 4 views
1

Ich erstelle eine Zeitplan/Zeitplan-Anwendung in Android Studio für autistische Kinder, wo sie ihren Tag mit "Activity Images" organisieren können, die "Drop-and-Drag" in insgesamt 5 'Aktivitäts-Slots "für jeden Tag (Montag, Dienstag usw.).Drop & Drag in mehrere Standorte

I haben jeweils Imagelocation wie folgt benannt:

Montag: 1A, 1B, 1C, 1D, 1E Dienstag: 2A, 2B, 2C, 2D, 2E Mittwoch: 3A, 3B, 3C, 4D, 3E Thurday: 4A, 4B, 4C, 4D, 4E FREITAG: 5A, 5B, 5C, 5D, 5E Samstag: 6A, 6B, 6C, 6D, 6E Sonntag: 7A, 7B, 7C, 7D, 7E

Ich habe es erfolgreich codiert, um ein "Aktivitätsbild" in Position 1A zu platzieren, aber ich bin mir nicht sicher, wie ich es für den Rest der Standorte codieren soll. Ich habe versucht, den Code, der vorher für die anderen Orte verwendet wurde, zu kopieren und einzufügen, aber wenn ein Bild "fallengelassen und gezogen" wurde, kopierte es das gleiche Bild in alle Orte, die codiert waren.

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

Tipp: Ich würde zwei Arraylists für Bild und Activitieslotlocation machen und dann durchlaufen die Prozessinitialisierung und Zuordnung der Listener. um deinen Code kürzer zu machen, – Alex

Antwort

0

ich Ihren Code ein wenig geändert, geben diesem einen Versuch, aber auf die Kommentare hören und versuchen, den Code ein wenig nach unten zu trimmen.

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

Hallo Alex. Entschuldigung, ich sollte auch erwähnen, dass ich ein bisschen Anfänger bin ... wenn ich deinen Code einfüge bekomme ich einen Fehler mit dem 'startview = v;' innerhalb der ACTION DRAG eingegeben und auch ein Fehler mit der 'if (! startview)' in der ACTION DROP –

+0

Was ist die Fehlermeldung sagen? – Alex

+0

Haben Sie vielleicht einen direkteren Formularkontakt? E-Mail vielleicht? Ich könnte dir Screenshots schicken? –