如何从字符串数组列表中随机选择

时间:2015-06-10 12:23:11

标签: java android arrays xml

我有一个字符串数组列表:

<string-array name="chapter_1">
      <item>......</item>
      .           
      .
      .
      .
</string-array>

<string-array name="chapter_2">
      <item>......</item>
      .           
      .
      .
      .
</string-array>

等等。 我有一个随机的int chapter_no。

我有一个字符串:

String chapter_name = "chapter_" + chapter_no;

现在,我想访问chapter_no。

对应的字符串数组

我知道我不能这样做:

  

String [] chapter =   。getResources()getStringArray(R.array.chapter_name);

如何随机访问字符串数组?请帮帮我。

5 个答案:

答案 0 :(得分:2)

从chapter_array获取随机字符串..

String[] chapter = getResources().getStringArray(R.array.chapter_name);

String randomString = chapter[new Random(chapter.length).nextInt()];

<强> [更新]

        String[] data;

        //first of all give all resources to arrays
        int[] arrays = {R.string.chapter_1, R.string.chapter_2};

        //then we are fetching any one string array resources randomly
        int chapter_no = arrays[new Random(arrays.length).nextInt()];

        //From above we got any one random resource string..So we fetch all string items from that resource into data array
        data = getResources().getStringArray(chapter_no);

        //Now from that data array we fetch any one random string.
        String randomString = data[new Random(data.length).nextInt()];

<强> [更新]

    String[] data;
    int[] arrays = {R.array.chapter_1, R.array.chapter_2};
    int chapter_no = arrays[new Random().nextInt(arrays.length-1)];
    data = getResources().getStringArray(chapter_no);
    String randomString = data[new Random().nextInt(data.length-1)];
    Toast.makeText(this, randomString, Toast.LENGTH_SHORT).show();

答案 1 :(得分:1)

尝试如下

<强>更新

int id = getResources().getIdentifier(chapter_name, "array",this.getPackageName()); 
String[] chapter = getResources().getStringArray(id);

希望这会对你有所帮助。

答案 2 :(得分:0)

创建一个包含所有数组ID的数组,然后在该数组中选择其中一个。

int[] arrays = {R.array.chapter_1,....};

随机选择这些阵列中的一个。

 Random random = new Random();
 int chapter_no = arrays[random.nextInt(arrays.length)];

答案 3 :(得分:0)

如果您只有2个字符串并且想要随机获取它们,您可以这样做:

Random random = new Random();

int chapter_no = random.nextInt(2) + 1;
String chapter_name = "chapter_" + chapter_no;

我上面提到的这个Random函数将获得值直到数字2。

我希望它对你有帮助!

答案 4 :(得分:0)

你可以这样做:

String[] chapter = getResources().getStringArray(R.array.chapter_1);
String[] chapter2 = getResources().getStringArray(R.array.chapter_2);
Random rand=new Random();
int randomNo=rand.nextInt();


ArrayList<String> temp = new ArrayList<String>();
temp.addAll(Arrays.asList(chapter));
temp.addAll(Arrays.asList(chapter2));
String [] concatedArgs = temp.toArray(new String[chapter.length+chapter2.length]);
String item=concatedArgs[randomNo];