2013-08-01 44 views
10

Próbuję opracować małą grę.Uzyskaj identyfikator zasobu z ImageView

Mam ViewFlipper, który ma 50 zdjęć (losowa częstotliwość 4 zdjęcia) w ImageViews. Następnie mam 4 przyciski z tymi samymi 4 obrazami, które mogą pojawić się w ViewFlipper.

Zadanie polega na kliknięciu prawego przycisku, gdy pojawi się prawy obrazek. (Kiedy Obraz 1 pokazuje przycisk 1 musi być wciśnięty i tak dalej)

Mój problem polega na tym, że nie wiem, jak wyświetlić wyświetlony identyfikator ImageView.

flipper.getCurrentView().getId() 

daje mi "-1" jako Id. Ale chcę mieć identyfikator "R.drawable.pic1"

mój kod do tej pory:

mój załadunek Metoda:

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)); 
    } 



} 

My Insert-Metoda:

private void setFlipperImage(int res) { 

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

Mój zameldowanie Metoda:

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); 
    } 


} 

Ja nazywam to tak:

button1.setOnClickListener(new OnClickListener() { 

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

       } 
      }); 
+1

'R.drawable.pic1' to identyfikator zasobu dla losowania,' .getId() 'zwraca identyfikator dla widoku. –

+0

chcesz, aby identyfikator obrazu był wyświetlany w twoim widoku obrazu? – Blackbelt

+0

Chcę, aby identyfikator obrazu wyświetlany był w moim widoku obrazu, po prawej. – Billabong

Odpowiedz

12

Czy to tak:

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

a następnie:

button1.setOnClickListener(new OnClickListener() { 

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

BTW używać else w całym kodzie prosimy Np

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

może to ci pomoże,

int icon = getResources().getIdentifier([YOUR IMAGE NAME], "drawable", 
      getPackageName());