2015-10-15 30 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());