Ich habe derzeit 8 ImageButtons eingerichtet mit IDs imageButton1 zu imageButton8.Android Studio: Iterieren durch Bilder in Zeichen für onClick imageButton
Wenn ich auf eine bestimmte Schaltfläche (z. B. imageButton2) klicke, möchte ich meine Bilder im ausklappbaren Ordner image1 .... image10 durchlaufen und das Bild für jeden Klick auf imageButton setzen.
Ich habe an verschiedenen gesucht Schleifen dieses Problem zu lösen, aber es haben sie nichts geführt. Hier ist ein Ausschnitt einer for-Schleife Versuch:
AKTUALISIERT 26/4/16
GELÖST
//UPDATED 25/4/16
ImageButton btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8;
ImageButton[] btns;
int[] drawables = new int[]{R.drawable.image1,R.drawable.image2,R.drawable.image3,R.drawable.image4,R.drawable.image5,R.drawable.image6,R.drawable.image7,R.drawable.image8};
@Override
protected void onCreate(Bundle savedInstanceState) {
btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn2 = (ImageButton) findViewById(R.id.imageButton2);
btn3 = (ImageButton) findViewById(R.id.imageButton3);
btn4 = (ImageButton) findViewById(R.id.imageButton4);
btn5 = (ImageButton) findViewById(R.id.imageButton5);
btn6 = (ImageButton) findViewById(R.id.imageButton6);
btn7 = (ImageButton) findViewById(R.id.imageButton7);
btn8 = (ImageButton) findViewById(R.id.imageButton8);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);
btn5.setOnClickListener(this);
btn6.setOnClickListener(this);
btn7.setOnClickListener(this);
btn8.setOnClickListener(this);
}
btns = new ImageButton[]{btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8};
}
int counter = 0;
@Override
public void onClick(View v)
{
counter ++;
for (int i = 0; i < btns.length; i++)
{
if (v.getId() == btns[i].getId())
{
if(counter ==8)
{
counter =0;
}
((ImageButton)v).setImageResource(drawables[counter]);
}
}
}
}
AKTUALISIERT 26/4/16
GELÖSTEin weiterer Versuch war ein erstellen counter, um die Anzahl der Klicks zu speichern und if-Anweisungen festzulegen, um die Bilder nach jedem Klick zu ändern.
Das Problem hier war, dass es eine riesige Menge an Code erstellt, wenn ich mehrere Tasten habe.
Darüber hinaus, wenn ich dies auf zwei verschiedene Tasten ausführen, einmal tippe ich auf imageButton1 ein paar Mal, dann imageButton2 ein paar Mal, reagiert imageButton1 nicht mehr.
int counter =0;
@Override
public void onClick(View v)
{
counter++;
switch(v.getId())
{
case R.id.imageButton1:
if(counter == 1){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image1);
break;
}else if (counter == 2){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image2);
break;
}else if (counter == 3){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image3);
break;
}else if (counter == 4){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image4);
break;
}else if (counter == 5){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image5);
break;
}else if (counter == 6){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image6);
break;
}else if (counter == 7){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image7);
break;
}else if (counter == 8){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image8);
break;
}else if (counter == 9){
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image9);
break;
}else if (counter == 10) {
ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton1);
btn1.setImageResource(R.drawable.image10);
counter = 0;
break;
}
break;
Ich würde jede Anleitung schätzen, währenddessen, wenn ich dieses Problem löse, werde ich einen Edit repost. Prost
habe ich versucht, so etwas wie dies vor, aber ein Fehler Anzeige erscheint, kann nicht „setImageResource (int)“ lösen – Steven
aktualisiert meine Antwort . Kannst du es jetzt versuchen? – ank
Meine Antwort wurde mit "((ImageButton) v) .setImageResource (drawables [i]);" aktualisiert. Ich denke, der Grund für den Fehler "Kann nicht aufgelöst werden" ist, weil das View-Objekt es nicht hat. Daher müssen wir es möglicherweise in ImageButton umwandeln, um die Methode zu erhalten. – ank