我的代码/情况:
我有四个 String 类的对象,从mQuestionAnswer1
到mQuestionAnswer4
命名。现在,它们以非常简单的方式显示在四个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
?所有提示都非常感谢。
答案 0 :(得分:1)
您的问题可以通过多种方式解决,因此我会发表我的第一个想法......
你可以使用集合,(因为它们可以被排序): 你需要什么:
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',
});