2013-08-01 19 views
10

Sto cercando di sviluppare un piccolo gioco.Ottieni ID risorsa da ImageView

Ho un ViewFlipper che ha 50 immagini (una frequenza casuale di 4 immagini) in ImageViews. Poi ho 4 pulsanti con le stesse 4 immagini che possono apparire nel ViewFlipper.

L'operazione è fare clic sul pulsante destro quando viene visualizzata l'immagine a destra. (Quando viene visualizzata l'immagine 1, il pulsante 1 deve essere premuto e così via)

Il mio problema è che non so come ottenere l'ID di ImageView visualizzato.

flipper.getCurrentView().getId() 

mi dà "-1" come ID. Ma voglio avere l'ID della "R.drawable.pic1"

Il mio codice finora:

mia Loader-Metodo:

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



} 

mio Insert-Metodo:

private void setFlipperImage(int res) { 

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

mio check-Metodo:

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


} 

mi chiamano come:

button1.setOnClickListener(new OnClickListener() { 

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

       } 
      }); 
+1

'R.drawable.pic1' è un ID risorsa per un drawable,' .getId() 'restituisce un ID per la vista. –

+0

vuoi che l'id dell'immagine sia visualizzata all'interno della tua visualizzazione di immagini? – Blackbelt

+0

Voglio l'ID dell'immagine visualizzata all'interno della mia visualizzazione di immagini, giusto. – Billabong

risposta

12

fare in questo modo:

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

e poi:

button1.setOnClickListener(new OnClickListener() { 

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

BTW utilizzare else in tutto il codice per favore, per esempio:

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

questo questo ti può aiutare,

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