Android:随机变量和多个setText

时间:2016-03-01 18:29:32

标签: java android arrays

我的代码/情况:

我有四个 String 类的对象,从mQuestionAnswer1mQuestionAnswer4命名。现在,它们以非常简单的方式显示在四个TextView中:tvQuestionAnswer1.setText(mQuestionAnswer1)等。

另外我需要提一下,答案是可点击的并且会被检查,例如当用户点击回答1时,它会触发监听器并调用checkAnswer(1)

我想要实现的目标:

我想要改变答案,这样每次都不会在同一位置显示答案。

我有一些解决方案,但我认为这有点过于复杂,如果你帮助我澄清这个问题,我将不胜感激。

我设置了数组:

int[] answersArray = {1, 2, 3, 4};

并使用名为shuffleArray()的Fisher-Yates方法对其进行随机播放:

shuffleArray(answersArray);

在此之后,我得到了洗牌阵列,这就是问题的开始。我不知道如何在TextViews中显示mQuestionAnswer1。我可以运行 for 循环和 if else ,但这可能是夸大其词。

检查答案应该更容易(应该......)。当用户点击回答1时,我想我会做类似的事情:checkAnswer(answersArray[0])

这是正确的做法吗?您是否知道如何快速显示mQuestionAnswer?所有提示都非常感谢。

2 个答案:

答案 0 :(得分:1)

您的问题可以通过多种方式解决,因此我会发表我的第一个想法......

你可以使用集合,(因为它们可以被排序): 你需要什么:

  1. 使用答案定义列表
  2. 洗牌清单......
  3. 填充文字视图
  4. 设置听众
  5. 您可以通过在每个视图上获取文字来检查答案
  6. 最终的Snippet看起来像:

    List<String> myAnswerList = new ArrayList<>(String);
    myAnswerList.add(answer1);
    myAnswerList.add(answer2);
    myAnswerList.add(answer3);
    myAnswerList.add(answer4);
    
    // now mixed up
    Collections.shuffle(myAnswerList);
    
    tvQuestionAnswer1.setText(myAnswerList.get(0));
    tvQuestionAnswer2.setText(myAnswerList.get(1));
    tvQuestionAnswer3.setText(myAnswerList.get(2));
    tvQuestionAnswer4.setText(myAnswerList.get(3));
    
    // set the onClickListeners
    
    //and in the onClick
    @Override
    public void onClick(View v) {
        checkAnswer(tvQuestionAnswer1.getText());
    }
    

答案 1 :(得分:0)

我会把答案放到一个数组中并随机播放。所有textViews都可以使用相同的监听器。

angular.module('UsersApp').constant('PLUrl', {
    bournemouth: 'squad/squad-bournemouth.json',
    arsenal: 'squad/squad-arsenal.json',
});