目前我有这个:front_card_display.setBackgroundResource(R.drawable.large_card_0);
但是,我希望large_card_“0”具有灵活性,这意味着我希望它基于变量或在需要时进行更改。它可能是1,2,3 ..等。这样做的最佳方法是什么。我也试过创建一个r.string但它似乎不起作用。提前谢谢。
问候,
瑞安答案 0 :(得分:1)
我相信你想要getIdentifier()。 Link
这是我所知道的唯一方式,它运作良好。
编辑:示例
for (int i = 1; i <= 118; i++) {
int id = getResources().getIdentifier("element" + i, "id", this.getPackageName());
Button preview = (Button) findViewById(id);
//...
}
这是一些代码。在我的例子中,我有118个按钮,名为element1,element2,element3,依此类推。您可以看到我如何使用“i”作为变量来遍历所有
答案 1 :(得分:1)
您需要设置一个设置drawableId的switch语句。
private int getDrawableId(int yourVariableToSwitchOn) {
int drawableId;
switch(yourVariableToSwitchOn) {
case CASE_0:
drawableId = R.drawable.large_card_0;
break;
case CASE_1:
drawableId = R.drawable.large_card_1;
break;
case CASE_2:
drawableId = R.drawable.large_card_2;
break;
case CASE_3:
drawableId = R.drawable.large_card_3;
break;
}
return drawableId;
}
然后只需设置背景front_card_display.setBackgroundResource(getDrawableId(someVariableToControlResource));