如何在 Kotlin 中随机从 ArrayList 中提取条目?

How do I pull entries from an ArrayList at random in Kotlin?

这是我的第一个 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 of\n 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).