Как можно задать индекс создаваемому ImageView?
У меня есть контейнер FrameLayout, на который я создаю ImageView раз в секунду в случайном положении на экране через container.addView(myImage). Через некоторое время я хочу удалить ImageView который был создан к примеру на третьей секунде.
var index = 0
fun drawImagePerSecond() {
index++
val container: FrameLayout = findViewById(R.id.container)
val myImage: ImageView = findViewById(R.id.myImage)
myImage.id = index
runOnUiThread {
container.addView(myImage)
}
}
fun removeImage(index: Int) {
val container: FrameLayout = findViewById(R.id.container)
runOnUiThread {
container.removeView(findViewById(index))
}
}
Каким образом можно создавать imageView с индексом, чтобы к примеру потом удалить imageView с выбранным индексом?
Ответы (1 шт):
Автор решения: Vind Iskald
→ Ссылка
val idsBySec: HashMap<Int,Int> = hashMapOf() // sec to viewId
var sec = 0
fun drawImagePerSecond() {
sec++
val container: FrameLayout = findViewById(R.id.container)
// Для фрагмента:
val myImage: ImageView = ImageView(requireContext())
// Для активити:
val myImage: ImageView = ImageView(this)
val newId = View.generateViewId()
myImage.id = newId
idsBySec[sec] = newId
runOnUiThread {
container.addView(myImage)
}
}
fun removeImage(sec: Int) {
val container: FrameLayout = findViewById(R.id.container)
idsBySec[sec]?.let { viewId ->
runOnUiThread {
container.removeView(findViewById(viewId))
}
}
}