2013-08-01 44 views
10

我正在嘗試開發一個小遊戲。從ImageView獲取資源ID

我有一個ViewFlipper在ImageViews中有50張圖片(4張圖片的隨機頻率)。然後我有4個按鈕,可以在ViewFlipper中出現相同的4張圖片。

任務是在出現右圖時單擊右鍵。 (當圖片1出現按鈕1必須按等等)

我的問題是我不知道如何獲取顯示的ImageView id。

flipper.getCurrentView().getId() 

給我「-1」作爲Id。但我想有 「R.drawable.pic1」

到目前爲止我的代碼的Id:

我的裝載機法:

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



} 

我的插入法:

private void setFlipperImage(int res) { 

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

我檢查法:

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


} 

我這樣稱呼它:

button1.setOnClickListener(new OnClickListener() { 

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

       } 
      }); 
+1

''R.drawable.pic1'是一個drawable的資源ID,'.getId()'返回一個視圖的id。 –

+0

你想要在你的圖像視圖內顯示圖像的ID? – Blackbelt

+0

我想要在圖像視圖中顯示的圖像的ID,正確。 – Billabong

回答

12

做這樣的:

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

然後:

button1.setOnClickListener(new OnClickListener() { 

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

在所有的代碼,請BTW使用else,如:

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

可能這個幫助你,

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