我有一个包含数组数组的xml
document.getElementById('edit_here').onfocus = function(){
if( this === document.activeElement )
return;
else {
this.focus();
location.href = '#result_here';
}
}
我已经返回了它需要的行位置
<resources>
<array name="oneAs">
<item>"1option1"</item>
<item>"1option2"</item>
<item>"1option3"</item>
<item name="answer">"1answer"</item>
</array>
<array name="twoAs">
<item>"2option1"</item>
<item>"2option2"</item>
<item>"2option3"</item>
<item name="answer">"2answer"</item>
</array>
<!--all answers -->
<array name="allAs">
<item>@array/oneAs</item>
<item>@array/twoAs</item>
</array>
</resources>
我只需要在每次调用时洗牌的列...例如,如果pos为0 然后它会返回“oneAs”数组的项目。如果pos为1,那么它将返回洗牌的“twoAs”数组。 allAs [0] [shuffledarray] allAs [1] [shuffledarray]
我的xml数组数组目前正在这里举行
Integer pos = getQs(q);
但我不确定如何将其变成2dim数组。 任何帮助表示赞赏!
答案 0 :(得分:0)
选项1:而不是&#34;改组&#34;数据,只要您需要从任何数组访问数据,您就可以随机化索引。你可以这样做:
Random rand = new Random ();
rand.nextInt(array.length());
像这样的事情确实有一个解决方案。
选项2:还有不同的改组算法。根据您用于创建数组的类,您可以使用Fisher-Yates shuffle:
// Implementing Fisher–Yates shuffle
static void shuffleArray(Object[] ar)
{
Random rnd = new Random();
for (int i = ar.length - 1; i > 0; i--)
{
int index = rnd.nextInt(i + 1);
// Simple swap
int a = ar[index];
ar[index] = ar[i];
ar[i] = a;
}
}
我建议做选项2,因为它更容易阅读和理解。您无需编辑XML。这违背了XML文件对Android的意义。
要将TypeArray转换为2dim数组,请参阅此文章:http://basememara.com/storing-multidimensional-resource-arrays-in-android/。它正在寻找您正在寻找的东西。该解决方案内置于Android中。您需要创建自己的代码以确定所需的信息。