Reputation: 539
If I do this, it sometimes sets the same image as it was in image_view
. For example, if R.drawable.cat__5_
is in image_view
I want to select from R.drawable.cat__3_,R.drawable.cat__4_,R.drawable.cat__6_,R.drawable.cat__7_,R.drawable.cat__8_.
How it can be done?
lateinit var random: Random
random = Random()
var cats = intArrayOf(
R.drawable.cat__3_,
R.drawable.cat__4_,
R.drawable.cat__5_,
R.drawable.cat__6_,
R.drawable.cat__7_,
R.drawable.cat__8_)
button.setOnClickListener{
image_view.setImageResource(cats[random.nextInt(cats.size)])
}
Upvotes: 1
Views: 116
Reputation: 588
private var previousIndex = 0 // member variable to track the previous index
private val random by lazy { Random() }
private val cats = intArrayOf(
R.drawable.cat__3_,
R.drawable.cat__4_,
R.drawable.cat__5_,
R.drawable.cat__6_,
R.drawable.cat__7_,
R.drawable.cat__8_)
button.setOnClickListener{
image_view.setImageResource(cats[getNewRandomIndex()])
}
private fun getNewRandomIndex(): Int {
var newIndex = -1
while(true) {
newIndex = random.nextInt(cats.size)
if(previousIndex != newIndex) {
previousIndex = newIndex
break
}
}
return newIndex
}
The above function getNewRandomIndex()
returns the index which is always different from the recent index. So you will get different image each time
Upvotes: 1