2013-01-07 41 views
1

我有一個Android應用程序的XML資源文件,其中包含許多字符串數組,每個指定的單詞#,其中#是一個數字(當前爲0-100)。即字0,字1等如何濃縮重複的開關語句

我正在使用隨機選擇一個隨機數,然後根據數字選擇正確的數組。所以,如果random.nextInt返回4,我的魔杖返回R.array.word4

這裏是我的代碼:

private String[] getWordArray(int i) { //i is a random number 

     Resources res = getResources(); 
     String[] x = new String[8]; 

     switch(i){ 
     case 0: x = res.getStringArray(R.array.word0); break; 
     case 1: x = res.getStringArray(R.array.word1); break; 
     case 2: x = res.getStringArray(R.array.word2); break; 
     case 3: x = res.getStringArray(R.array.word3); break; 
//and so on 
} 

我知道這是重複的窘況,尤其是因爲我最終想要擁有1000個陣列。我能做些什麼來改善這一點?

我必須使用XML資源存儲方法。

+3

你確定你需要1000個陣列?爲什麼'R.array'沒有編入索引,如'word'我''? –

回答

3

你可以通過它的名字得到資源ID:

final Resources resources = getResources(); 
final String name = "word" + i; 
final int id = resources.getIdentifier(name, "array", getPackageName()); 
final String[] array = resources.getStringArray(id); 
+0

完美的作品!謝謝! – BlackBelt2025