这是我第一个Kotlin项目。我边走边学,我遇到了一个障碍。
我有一个问题的数组列表,我想拉到这个应用程序在一个随机的顺序。我试过分配。random到问题分配的点(现在它被设置为CurrentPosition-1),但这只是随机化的问题,并没有把正确的答案连同问题一起拉。
如何将问题的答案捆绑在一起,或者是否有更好的方法将问题按顺序排列?我计划有50多个问题,但每次考试只有10个会显示。我不希望用户每次打开测试时都显示同样的10个问题。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_quiz_questions)
mQuestionsList=Constants.getQuestions()
setQuestion()
}
private fun setQuestion(){
val question = mQuestionsList!![mCurrentPosition-1]
defaultOptionsView()
if(mCurrentPosition == mQuestionsList!!.size){
submitBtn.text = "Finish"
}else{
submitBtn.text = "Submit"
}
progressBar.progress = mCurrentPosition
tv_progress.text = "$mCurrentPosition" + "/" + progressBar.max
tv_question.text = question!!.question
test_image.setImageResource(question.image)
tvOptionOne.text = question.optionOne
tvOptionTwo.text = question.optionTwo
tvOptionThree.text = question.optionThree
tvOptionFour.text = question.optionFour
}
private fun defaultOptionsView(){
val options = ArrayList<TextView>()
options.add(0, tvOptionOne)
options.add(1, tvOptionTwo)
options.add(2, tvOptionThree)
options.add(3, tvOptionFour)
这是我的数组
object Constants{
const val TOTAL_QUESTIONS: String = "total_questions"
const val CORRECT_ANSWERS: String = "correct_answers"
fun getQuestions(): ArrayList<Question>{
val questionsList = ArrayList<Question>()
val q1 = Question(
R.drawable.questionmark,
1,
"Who is Regional Manager ofn Dunder Mifflin Scranton?",
"Michael",
"Jim",
"Pam",
"Dwight",
1,
)
我很感激你的帮助。提前谢谢你。
list.shuffled().take(10)
并且使您的mQuestionsList
属性类型为List而不是ArrayList,因为您不需要在检索后修改它。您可能还应该将其设置为lateinit
或在其声明位置对其进行初始化,这样您就不必将该类型设置为空,而不得不求助于!!
,这通常是一种代码气味。所以我将它声明为var mQuestionsList: List<Question> = emptyList()
,当你想要新值时,执行mQuestionsList = Constants.getQuestions().shuffled().take(10)
。