【问题标题】:using multiple string arrays and getting string arrays dynamically使用多个字符串数组并动态获取字符串数组
【发布时间】:2014-03-25 00:30:05
【问题描述】:

我想使用随机数生成器来选择存储在我的 .xml 文件中的一张卡片作为字符串数组。

目前我知道我可以通过调用来更改文本视图

String[] cards = getResources().getStringArray(R.array.card1);

text1.setText(cards[0]);
text2.setText(cards[1]);
text3.setText(cards[2]);
text4.setText(cards[3]);
text5.setText(cards[4]);
text6.setText(cards[5]);

这将正确加载字符串数组中的项目。

我的问题是当随机数生成时,我如何使用该数字来

.getStringArray(R.array.cardX);

其中 x 是生成的整数,因此我可以每次随机生成一个字符串列表。我想我希望在 .getSringArray(X) 中输入一些变量,但我不知道该怎么做。如果您对如何执行此操作有任何其他建议也会有所帮助。感谢您的帮助

【问题讨论】:

    标签: android string resources textview settext


    【解决方案1】:

    如果我理解正确,您有几个字符串数组资源要随机选择。

    很遗憾,资源 ID 生成为变量,无法从字符串生成资源 ID。如果您在构建目录中查看 R.java,您会注意到资源 ID 在其中被声明为实际变量。

    您必须这样做的方法是创建一个可供选择的资源 ID 列表:

    import java.util.Random;
    
    int[] cardStringResourceIds = {
      R.array.cards1,
      R.array.cards2,
      R.array.cards3,
    };
    
    Random random = new Random();
    int randomIndex = random.nextInt(cardStringResourceIds.length);
    
    String[] cards = getResources().getStringArray(cardStringResourceIds[randomIndex]);
    

    【讨论】:

    • 我可以洗牌而不是使用随机数生成器吗?我该怎么做?我正在努力避免重复。
    • 洗哪些牌? cards[] 数组中的卡片?
    • 是的。谢谢埃利米尔克斯。从那以后,我想出了如何去做。 Collections.shuffle(list);不过,您确实在正确的方向上帮助了我。我很感激。如果我有足够的声誉,我会支持你虽然我不能我已经潜伏在这个网站上很长时间了。
    猜你喜欢
    • 2012-11-13
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    相关资源
    最近更新 更多