获取ImageView数组后面的整数

时间:2014-05-20 14:54:07

标签: java android imageview

我将此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 };

欢迎任何想法或建议。

3 个答案:

答案 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()设置为所有ImageViewsOnClickListener()已通过已点击的ViewView的{​​{1}}返回getId(),其ID为int。然后,只需添加Viewswitch即可根据点击的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);