如何从android中的数组列表中每次选择新的或唯一的随机项?

时间:2018-02-14 08:00:01

标签: android kotlin

我需要每次从未选择的列表中选择新项目。这是我的代码。请建议我每次给我新项目的任何解决方案。我使用了一个int列表,用于所有以前挑选的项目,并在每次选择新项目时进行检查,但我没有成功。

3 个答案:

答案 0 :(得分:1)

这是相同的代码::

val arrayList = ArrayList<String>()
   arrayList.add("a")
    arrayList.add("b")
    arrayList.add("c")
    arrayList.add("d")
    arrayList.add("e")
    arrayList.add("f")
    arrayList.add("g") 
    arrayList.add("h") 
    arrayList.add("i")
    arrayList.add("j") 
    arrayList.add("k") 
    random = Random()

    Low = 0
    High = arrayList.size


    val generateRandom = findViewById<View>(R.id.generateRandom) as Button
    generateRandom.setOnClickListener {
        val Result = random.nextInt(High - Low) + Low

        Log.v("check", arrayList[Result])
    }

如果需要更多请告诉我!!

答案 1 :(得分:1)

您所寻找的并不明显,但看起来您想要从ArrayList中显示不同的测验问题。在显示该问题的情况下,将不再显示相同的问题。这是你应该怎么做,我会给你你自己尝试的逻辑:

import java.util.Random

fun main(args: Array<String>) {

    val random = Random()
    var randomInt: Int
    var pickedInt: MutableSet<Int> = mutableSetOf()

    fun rand(from: Int, to: Int): Int{
        do{
            randomInt = random.nextInt(to - from) + from
        }while(pickedInt.contains(randomInt))

        pickedInt.add(randomInt)
        return randomInt
    }

    while(pickedInt.size < 9){
        var differentNumber = rand(1,11)
        println(differentNumber)
    }
}

这将打印九个不同的数字。我选择MutableSet的方式是因为它只有唯一值,没有重复值。希望它有所帮助!

答案 2 :(得分:0)

尝试这种方式

class MainActivity : AppCompatActivity() {

    private var arrayList = ArrayList<String>()
    private var lastItem = -1

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        for (i in 0..9) {
            arrayList.add(i.toString())
        }
        btnData.setOnClickListener {
            Log.e("RANDOM_NUMBER", "" + getRandomItemFromList())
        }
    }

    private fun getRandomItemFromList(): Int {
        val randomValue = Random().nextInt(arrayList.size)

        return if (randomValue != lastItem) {
            lastItem = randomValue
            randomValue
        } else {
            getRandomItemFromList()
        }

    }
}