我有一个字符串数组列表:
<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);
如何随机访问字符串数组?请帮帮我。
答案 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];