【问题标题】:Java setImageResourceJava setImageResource
【发布时间】:2016-04-13 20:36:34
【问题描述】:

我有一个小纸牌游戏。在 ArrayList 中,我添加了 52 张卡片:

ArrayList<String> liste = new ArrayList<String>();

并用这个填充它:

for (int n=1; n<14; n++) {
    liste.add("d" +n); //diamonds
    liste.add("c" +n); //clubs
    liste.add("s" +n); //spades
    liste.add("h" +n); //hearts
}

要抽一张牌,我使用以下代码:

private void drawCard() {
    if (liste.size()!=0) {
        Collections.shuffle(liste);
        kort.setText("" + liste.get(0));
        int i = liste.size();
        cardsLeft.setText("" + (i - 1));
        cardImage.setImageResource(R.drawable.XXX);
        liste.remove(0);
    }
    else kort.setText("No more cards in deck");
}

在我的可绘制文件夹中,我有 52 张卡片图片,它们的名称与 ArrayList 中的名称相同。 当程序绘制例如。 d2 我还需要将 ImageView cardImage 设置为可绘制文件夹中的图像 d2:

cardImage.setImageResource(R.drawable.d2);

需要帮助我如何更改图像视图以匹配绘制的卡片

【问题讨论】:

    标签: java android


    【解决方案1】:

    你可以这样做:

    public static int getDrawableId(Context ctx, String name) {
       return ctx.getResources().getIdentifier(name, "drawable", ctx.getPackageName());
    }
    
    cardImage.setImageResource(getDrawableId(YourActivity.this, "d2"));
    

    【讨论】:

    • 很抱歉问这个问题,但这是如何工作的?如果游戏绘制 d2(2 的钻石),TextView 将使用简单的代码更新并在屏幕上显示 d2。如何使用图像 R.drawable.d2 更新 ImageView ?我必须为每张图片制作一个代码吗?要替换的东西:cardImage.setImageResource(R.drawable.liste.get(0));
    • Resources.getIdentifier(String name, String type) 向您返回具有给定类型的给定名称的资源的标识符。因此,getIdentifier("d2", "drawable") 返回 R.drawable.d2 或者,getIdentifier("card_layout", "layout") 返回 R.layout.card_layout。资源标识符是整数,您可以将它们传递到需要的地方,例如 setImageResource()
    • @AlexanderKulyakhtin 您对getDrawableId() 的示例调用错过了上下文参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多