Отображать объекты списка случайным образом, но только один раз для каждого объекта в Kotlin? - PullRequest
0 голосов
/ 04 мая 2020

Извините, если это супер-основа c, я только начинаю программировать в целом.

Итак, у меня есть этот список, мне удалось отобразить объект из него случайным образом, когда пользователь нажимает на кнопку.

Вот код, который делает это:


val listOfElement = listOf<String>(
"test", "test2", "test 3")

fun generateElement (view: View) {

tvDisplay.text = listOfElement.random()
} 

Работает нормально, но проблема в том, что объект (например, «test3») может отображаться дважды перед ним. перебирает остальную часть списка.

Так что в основном я хотел бы:

  • Отображать каждый объект только один раз, НО, когда все объекты были отображены, тогда он должен начаться снова в случайном порядке.

Еще раз спасибо и извините, если это не подходит - это мой первый раз на stackoverflow!

1 Ответ

1 голос
/ 04 мая 2020

Вы можете сделать копию списка и удалить случайный элемент, а затем снова заполнить список, когда он пуст:

val listOfElement = listOf<String>(
    "test", "test2", "test 3")

val copy = mutableListOf<String>()

fun generateElement (view: View) {
    if (copy.isEmpty()) {
        copy.addAll(listOfElement)
    }
    val random = copy.random()
    copy.remove(random)
    tvDisplay.text = random
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...