2013-08-01 21 views
10

Ich versuche, ein kleines Spiel zu entwickeln.Get Resource ID von ImageView

Ich habe einen ViewFlipper, der 50 Bilder (zufällige Häufigkeit von 4 Bildern) in ImageViews hat. Dann habe ich 4 Buttons mit den gleichen 4 Bildern, die im ViewFlipper erscheinen können.

Die Aufgabe ist, den rechten Knopf zu klicken, wenn das rechte Bild erscheint. (Wenn Bild 1 angezeigt wird Taste 1 muss gedrückt werden usw.)

Mein Problem ist, ich weiß nicht, wie man die angezeigte ImageView ID bekommt.

flipper.getCurrentView().getId() 

gibt mir "-1" als Id. Aber ich will die Id von "R.drawable.pic1" haben

Mein Code so weit:

meine Loader-Methode:

protected void loadPicturesIntoFlipper() { 

    Random generator = new Random(); 
    pictures = new ArrayList(); 

    for(int i = 0; i < 50;i++){ 

     int number = generator.nextInt(4) + 1; 

     if(number == 1){ 
      pic = R.drawable.pic1; 
     } 
     if(number == 2){ 
      pic = R.drawable.pic2; 
     } 
     if(number == 3){ 
      pic = R.drawable.pic3; 
     } 
     if(number == 4){ 
      pic = R.drawable.pic4; 
     } 

     pictures.add(pic); 
    } 


    for(int i=0;i<pictures.size();i++) 
    { 

     setFlipperImage((Integer) pictures.get(i)); 
    } 



} 

Meine Insert-Methode:

private void setFlipperImage(int res) { 

    image = new ImageView(getApplicationContext()); 
    image.setBackgroundResource(res); 
    flipper.addView(image); 
} 

Mein Check-Methode:

protected void check(int number, int id) { 
    int code = 0;; 

    if(number == 1){ 
     code = R.drawable.button_tip_finder; 
    } 
    if(number == 2){ 
     code = R.drawable.button_about_us; 
    } 
    if(number == 3){ 
     code = R.drawable.button_power_calculator; 
    } 
    if(number == 4){ 
     code = R.drawable.button_powerpedia; 
    } 



    if(code == id){ 
     test.setText(""+id); 
    } 
    else{ 
     test.setText(""+id); 
    } 


} 

Ich nenne es wie:

button1.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 
       check(1,flipper.getCurrentView().getId()); 
       flipper.showNext(); 

       } 
      }); 
+1

'R.drawable.pic1' ist eine Ressource-ID für ein Zeichen,' .getId() 'gibt eine ID für die Ansicht zurück. –

+0

Möchten Sie die ID des Bildes in Ihrem Bild anzeigen? – Blackbelt

+0

Ich möchte die ID des Bildes in meinem Bild angezeigt, rechts. – Billabong

Antwort

12

es wie folgt tun:

private void setFlipperImage(int res) { 
    image = new ImageView(getApplicationContext()); 
    image.setBackgroundResource(res); 
    image.setTag(res); //<------ 
    flipper.addView(image); 
} 

und dann:

button1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       check(1,(Integer)flipper.getCurrentView().getTag());//<---- 
       flipper.showNext(); 
      } 
     }); 

BTW else in allen Ihren Code verwenden, bitte, Eg:

if(number == 1){ 
     pic = R.drawable.pic1; 
} else if(number == 2){ 
     pic = R.drawable.pic2; 
} else if(number == 3){ 
     pic = R.drawable.pic3; 
} 
1

kann dieser Ihnen helfen,