2014-05-20 67 views
1

我有這個thing進入我的應用程序。獲取ImageView陣列後面的整數

,我想要做的是,當有人按下模具與我想補充5分到他的ArrayList中的5號。我在想一個聽衆但我怎麼知道哪個ImageView被按下了?

目前我使用這個方法來獲取正確的佔位符在板

public ImageView[] initiateDice() { 
    ImageView pDice1 = (ImageView) findViewById(R.id.die_one); 
    ImageView pDice2 = (ImageView) findViewById(R.id.die_two); 
    ImageView pDice3 = (ImageView) findViewById(R.id.die_three); 
    ImageView pDice4 = (ImageView) findViewById(R.id.die_four); 
    ImageView pDice5 = (ImageView) findViewById(R.id.die_five); 
    ImageView pDice6 = (ImageView) findViewById(R.id.die_six); 
    ImageView pDice7 = (ImageView) findViewById(R.id.die_seven); 
    ImageView pDice8 = (ImageView) findViewById(R.id.die_eight); 

    ImageView[] placeHolders = new ImageView[] {pDice1, pDice2, pDice3, pDice4, pDice5, pDice6, pDice7, pDice8}; 
    return placeHolders; 
} 

和我在「打印」使用方法

public void printDice(int[] array1, ImageView[] array2) { 
    for (int i = 0; i < array1.length; i++) { 
     array2[i].setImageResource(diceImages[array1[i] - 1]); 
     array2[i].setVisibility(View.VISIBLE); 
    } 
} 

在屏幕上的骰子第一個數組是8個隨機生成的骰子數字,第二個數組是PlaceHolders。

diceImages是骰子的圖像,它們的六個狀態。

private final int[] diceImages = new int[] {R.drawable.dice_one, R.drawable.dice_two, R.drawable.dice_three, 
     R.drawable.dice_four, R.drawable.dice_five, R.drawable.dice_pico }; 

歡迎任何想法或建議。

回答

0

其他答案提供一些解決方案,但你其實是問如何獲得在圖像視圖中顯示的號碼,在這種情況下,可以將其保存到標籤:

public void printDice(int[] array1, ImageView[] array2) { 
    for (int i = 0; i < array1.length; i++) { 
     array2[i].setImageResource(diceImages[array1[i] - 1]); 
     array2[i].setVisibility(View.VISIBLE); 
     array2[i].setTag(array1[i]); 
    } 
} 

並修改馬特的答案:

OnClickListener listener = new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     Integer dieValue = v.getTag(); 
     // do something 
    } 
}; 

pDice1.setOnClickListnener(listener); 
pDice2.setOnClickListnener(listener); 
pDice3.setOnClickListnener(listener); 
pDice4.setOnClickListnener(listener); 
pDice5.setOnClickListnener(listener); 
pDice6.setOnClickListnener(listener); 
pDice6.setOnClickListnener(listener); 
pDice8.setOnClickListnener(listener); 
+0

非常感謝。我甚至沒有想過'.setTag()'方法,謝謝你。是的,其他答案也很好。再次感謝。 – TheNerdFromYesterday

0

一種方式來做到這一點是設置一個OnClickListener這樣的:

OnClickListener listener = new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     if (v == pDice1) { 
      // do something 
     } else if (v == pDice2) { 
     ... 
     } 
    } 
}; 

pDice1.setOnClickListnener(listener); 
pDice2.setOnClickListnener(listener); 
pDice3.setOnClickListnener(listener); 
pDice4.setOnClickListnener(listener); 
pDice5.setOnClickListnener(listener); 
pDice6.setOnClickListnener(listener); 
pDice6.setOnClickListnener(listener); 
pDice8.setOnClickListnener(listener); 
+0

如果所有'pDice'變量都是'initiateDice()'的局部變量,他不能在匿名類中使用它們而不聲明它們是final。 – Emmanuel

0

你會設置一個OnClickListener()所有ImageViewsOnClickListener()通過點擊的ViewViewgetId(),返回intView的ID。然後,只需要添加一個switchif(){...} else if(...)()來執行基於被點擊的View的ID的特定操作。