Java Android Studio从XML中洗牌2D数组列
我有一个包含数组的xml
<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>
我已经返回了它需要的行位置
Integer pos = getQs(q);
我只需要在每次呼叫时将列洗牌。。。例如,如果pos为0 然后它将返回“oneAs”数组shuffed的项。如果pos为1,那么它将返回洗牌后的“twoAs”数组项。 阿拉斯[0][ShuffleArray] 阿拉斯[1][Shuffledaray]
我的xml数组当前保存在这里
TypedArray answers = res.obtainTypedArray(R.array.allAs);
但我不确定如何将其放入2dim数组中。 感谢您的帮助
# 1 楼答案
选项1:在需要访问任何数组中的数据时,您可以随机化索引,而不是“随机”数据。您可以这样做:
像这样的事情真的没有解决办法
选项2:也有不同的洗牌算法。根据用于创建阵列的类,可以使用Fisher-Yates shuffle:
我建议做选项2,因为它更容易阅读和理解。您不必编辑XML。这与XML文件在Android中的用途背道而驰
要将TypeArray转换为2dim数组,请参阅本文:http://basememara.com/storing-multidimensional-resource-arrays-in-android/。这就是你要找的。该解决方案内置于Android中。您需要创建自己的代码来精确获取所需的信息