如何压缩重复的switch语句

时间:2013-01-07 16:33:18

标签: android xml switch-statement dry

我有一个Android应用程序的XML资源文件,其中包含许多字符串数组,每个字符串数组都命名为#,其中#是一个数字(目前是0-100)。即word0,word1等

我使用Random来选择一个随机数,然后使用switch语句根据数字选择正确的数组。所以,如果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资源存储方法。

1 个答案:

答案 0 :(得分: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);