2015-10-15 77 views
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 
}; 

我将这些ImagesImageViews与随机

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 like

<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(1/5)。例如,如果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 

有一个整体的问题这点。我只是甚至不知道如何谷歌

回答

1

我决定我的问题是这样的: card_value - 随机intdeckIDS阵列获得卡的名称。这个名字等于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); 

希望它是有用的。

0

所以对我来说,听起来你有五个“卡”,每张卡都有一个位置。您需要能够生成一个包含卡号和卡位置的字符串。

你可以做一个名为“卡”类,并已将其拥有的属性:

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()将产生一个像你正在寻找的字符串(即“卡3 - 文本2”)。

然后,您可以使用setText()属性以编程方式在代码中设置textview的值。即textviewX.setText(cardX.getCardString());