我有一个Image
ID
public Integer[] deckIDs = {
R.drawable.bashnya,
R.drawable.blazhenstvo,
R.drawable.borba,
R.drawable.card_tarot,
R.drawable.deystvie,
R.drawable.odinochestvo,
R.drawable.opasnost,
R.drawable.osoznanie,
R.drawable.otshelnik,
R.drawable.pamyat,
R.drawable.pechal,
R.drawable.peremirie,
R.drawable.pobeda,
R.drawable.pomoshch,
R.drawable.poveshevyi,
R.drawable.predlagaushchyi,
R.drawable.presyschenie
};
我将这些Images
放在ImageViews
中随机
Random card1 = new Random();
int card1_value = card1.nextInt(16);
int card2_value = card1.nextInt(16);
int card3_value = card1.nextInt(16);
int card4_value = card1.nextInt(16);
int card5_value = card1.nextInt(16);
card1_image.setImageResource(deckIDs[card1_value]);
card2_image.setImageResource(deckIDs[card2_value]);
card3_image.setImageResource(deckIDs[card3_value]);
card4_image.setImageResource(deckIDs[card4_value]);
card5_image.setImageResource(deckIDs[card5_value]);
我还有5 TextViews
和很多strings
喜欢
<string name="card1_1">card 1 - text 1</string>
<string name="card1_2">card 1 - text 2</string>
<string name="card1_3"">card 1 - text 3</string>
<string name="card1_4"">card 1 - text 2</string>
<string name="card1_5"">card 1 - text 5</string>
<string name="card2_1"">card 2 - text 1</string>
<string name="card2_2"">card 2 - text 2</string>
...
我需要展示其中一个string
,具体取决于image
来自array
的{{1}}以及position
(1 of 5)它放置了。例如,Images
中的一个card 1 - text 1
如果它在第一个位置则为card 1 - text 2
,如果它在几秒内则为Images
。等等
希望你能清楚地理解我的问题并且你会帮助我,因为我因为编程能力不强而陷入困境。
我需要补充的是,会有更多string-name
(接近80),我希望可以设置文字,具体取决于res id
和 <string name="card44"">card 44 - text 1</string>
R.drawable.card44
,例如
<id>12195432</id>
在这一点上存在一个问题。我甚至不知道如何谷歌
答案 0 :(得分:1)
我这样决定了我的问题:
card_value
- 随机int
,用于从deckIDS
数组中获取卡片的名称。此名称等于array
中strings.xml
的名称之一。使用方法getIdentifier
,我得到string
值。
String fortune_1 = getResources().getResourceEntryName(deckIDs[card1_value]);
int resId_1 = getResources().getIdentifier(fortune_1, "array", getPackageName());
String[] text_of_fortune_1 = getResources().getStringArray(resId_1);
希望它有用。
答案 1 :(得分:0)
所以对我而言,听起来你有五张卡片,并且每张卡片都有一个位置。您需要能够生成包含卡号和卡位置的字符串。
你可以创建一个名为&#34; card&#34;并拥有它们的属性:
int position;
int cardNumber;
int arrayPosition;
public card(int pos, int card, int arraypos){
position = pos;
cardNumber = card;
arrayPosition = arraypos;
}
在类中有一个函数可以生成你正在寻找的字符串:
public string getCardString(){
return String.format("card %1$d - text %2$d", cardNumber, position);
}
上述方法getCardString()
将生成一个类似您正在寻找的字符串(即&#34;卡片3 - 文本2&#34;)。
然后,您可以使用setText()
属性以编程方式在代码中设置textview的值。即textviewX.setText(cardX.getCardString());