我将此thing放入我的应用程序中。
我想做的就是这个,当有人按下带有数字5 的模具时,我想将 5分添加到他的ArrayList中。我在想一个 Listener ,但我怎么知道哪个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 :(得分: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);
答案 1 :(得分:0)
您可以将OnClickListener()
设置为所有ImageViews
。 OnClickListener()
已通过已点击的View
。 View
的{{1}}返回getId()
,其ID为int
。然后,只需添加View
或switch
即可根据点击的if(){...} else if(...)()
的ID执行特定操作。
答案 2 :(得分: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);