如何根据图像和图像的位置显示文本

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-nameres 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 数组中获取卡片名称。这个名字等于 arraystrings.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);

希望有用。