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

时间:2015-10-15 17:07:19

标签: android string image settext

我有一个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>

在这一点上存在一个问题。我甚至不知道如何谷歌

2 个答案:

答案 0 :(得分:1)

我这样决定了我的问题: 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);

希望它有用。

答案 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());