如何根据图像和图像的位置显示文本
How to show Text depending of Image and Image's position
我有一个 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
之一,具体取决于我从 array
中得到的 image
,以及 position
中的内容(5 个中的 1 个) ) 它已放置。例如,其中一个 Images
如果它处于第一位则使 card 1 - text 1
,如果它在第二位则成为 card 1 - text 2
。等等
希望您能清楚地了解我的问题并帮助我,因为我的编程技能很差,所以卡住了。
我需要补充一点,会有更多 Images
(接近 80),我希望可以设置文本,具体取决于 string-name
和 res id
,例如
<string name="card44"">card 44 - text 1</string>
R.drawable.card44
这一点完全有问题。我什至不知道如何google
所以在我看来你有五张 "cards",每张牌都有一个位置。您需要能够生成包含卡号和卡位置的字符串。
您可以制作一个名为 "card" 的 class 并使其具有以下属性:
int position;
int cardNumber;
int arrayPosition;
public card(int pos, int card, int arraypos){
position = pos;
cardNumber = card;
arrayPosition = arraypos;
}
在 class 中有一个函数可以生成您要查找的字符串:
public string getCardString(){
return String.format("card %1$d - text %2$d", cardNumber, position);
}
上述方法 getCardString()
将生成一个类似于您要查找的字符串(即 "card 3 - text 2")。
然后您可以使用 setText()
属性 以编程方式在您的代码中设置 textview 的值。 IE。 textviewX.setText(cardX.getCardString());
我是这样决定我的问题的:
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);
希望有用。
我有一个 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
之一,具体取决于我从 array
中得到的 image
,以及 position
中的内容(5 个中的 1 个) ) 它已放置。例如,其中一个 Images
如果它处于第一位则使 card 1 - text 1
,如果它在第二位则成为 card 1 - text 2
。等等
希望您能清楚地了解我的问题并帮助我,因为我的编程技能很差,所以卡住了。
我需要补充一点,会有更多 Images
(接近 80),我希望可以设置文本,具体取决于 string-name
和 res id
,例如
<string name="card44"">card 44 - text 1</string>
R.drawable.card44
这一点完全有问题。我什至不知道如何google
所以在我看来你有五张 "cards",每张牌都有一个位置。您需要能够生成包含卡号和卡位置的字符串。
您可以制作一个名为 "card" 的 class 并使其具有以下属性:
int position;
int cardNumber;
int arrayPosition;
public card(int pos, int card, int arraypos){
position = pos;
cardNumber = card;
arrayPosition = arraypos;
}
在 class 中有一个函数可以生成您要查找的字符串:
public string getCardString(){
return String.format("card %1$d - text %2$d", cardNumber, position);
}
上述方法 getCardString()
将生成一个类似于您要查找的字符串(即 "card 3 - text 2")。
然后您可以使用 setText()
属性 以编程方式在您的代码中设置 textview 的值。 IE。 textviewX.setText(cardX.getCardString());
我是这样决定我的问题的:
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);
希望有用。