2017-04-10 2 views
0

Ich arbeite gerade an einem Projekt und habe festgestellt, dass ich oft große Code-Stücke kopiere. Ich weiß, dass man es nicht tun sollte, aber ich habe noch keinen besseren Weg gefunden. Meistens muss ich ImageResource nur auf ein Layout-Objekt basierend auf einem bestimmten Wert festlegen. Es ist wirklich ein Schmerz, dies für 25 Mal zu wiederholen und img1 zu img2 und so weiter zu ändern. Gibt es einen Weg, wie man es richtiger und schneller macht? Siehe Beispiel unten.Wie vermeidet man große Teile des kopierten Codes in Bezug auf Layout-Ansichten?

Ein kleines Beispiel dafür, was ich meine

if(!b1){ 
     foobar = rewardrandom.nextInt(100)+1; 
     if (foobar <= 40){ 
      r1= 0; 
      img1.setImageResource(R.drawable.empty); 
     } 
     if (foobar > 40 && foobar <=70){ 
      r1= 1; 
      img1.setImageResource(R.drawable.item1); 
     } 
     if (foobar > 70 && foobar<=90){ 
      r1= 2; 
      img1.setImageResource(R.drawable.item2); 
     } 
     if (foobar > 90){ 
      r1= 3; 
      img1.setImageResource(R.drawable.item3); 
     } 
    } 
    if(!b2){ 
     foobar = rewardrandom.nextInt(100)+1; 
     if (foobar <= 40){ 
      img2.setImageResource(R.drawable.empty); 
      r2 = 0; 
     } 
     if (foobar > 40 && foobar <=70){ 
      img2.setImageResource(R.drawable.item1); 
      r2 = 1; 
     } 
     if (foobar > 70 && foobar<=90){ 
      img2.setImageResource(R.drawable.item2); 
      r2 = 2; 
     } 
     if (foobar > 90){ 
      img2.setImageResource(R.drawable.item3); 
      r2 = 3; 
     } 
    } 
+0

b1 und b2 boolean sind gleich (ich frage dich falsch schreiben) oder verschiedene boolesche Variablen? –

+0

b1 und b2 sind nicht gleich. Und das Problem ist, dass ich 25 davon habe und ich muss nur diesen Code kopieren und b1, r1, img1, b2, r2, img2 usw. ersetzen. Es ist im Grunde der gleiche Code, aber verschiedene Variablen. Gibt es eine Möglichkeit, dies in eine Schleife oder etwas zu verkürzen? –

Antwort

1

Sie es, indem sie ein Verfahren wie dieses

private int yourMethodName (boolean condition, ImageView img, int r){ 
    if (!condition){ 
     foobar = rewardrandom.nextInt(100)+1; 

     if (foobar <= 40){ 
      r = 0; 
      img.setImageResource(R.drawable.empty); 
     } 
     if (foobar > 40 && foobar <=70){ 
      r = 1; 
      img.setImageResource(R.drawable.item1); 
     } 
     if (foobar > 70 && foobar<=90){ 
      r = 2; 
      img.setImageResource(R.drawable.item2); 
     } 
     if (foobar > 90){ 
      r = 3; 
      img.setImageResource(R.drawable.item3); 
     } 
    } 

    return r; 
} 

und verwenden Sie es wie folgt

r1 = yourMethodName(b1, img1, r1); 
    r2 = yourMethodName(b2, img2, r2); 
    r2 = yourMethodName(b3, img3, r3); 
    // etc... 
verkürzen
+0

Ich habe keine Ahnung, warum ich nicht daran gedacht habe. Vielen Dank. –

Verwandte Themen