На первый взгляд 3 цикла выглядят одинаково, но они отличаются на последнем 3d условия.Каждый проверяет это:
it.child("location").getValue().toString().equals(items.get(x).toString())
, где x равен 0, 1 или 2.Таким образом, они не то же самое, что удивляться, почему последние 2 не работают, как вы говорите.Возможно, условие работает только для:
items.get(0).toString()
В любом случае вы можете упростить свой код и добавить некоторый код отладки, чтобы быть уверенным в том, что происходит:
(0..2).forEach { i ->
children.forEach {
val dateOk = it.child("Date").getValue().toString().equals(Data.date)
val timeOk = it.child("Time").getValue().toString().equals(Data.time)
val itemOk = it.child("location").getValue().toString().equals(items.get(i).toString())
Log.d("Loop", "at $i: dateOk = $dateOk, timeOk = $timeOk, itemOk = $itemOk")
if( dateOk && timeOk && itemOk){
when (i) {
0 -> //
1 -> //
2 -> //
}
}
}
}