Kotlin Firebase несколько петель - PullRequest
0 голосов
/ 15 декабря 2018

Когда я добавляю несколько циклов для извлечения данных из базы данных Firebase, работает только первый цикл, почему это происходит и как я могу заставить работать все циклы

 val children = dataSnapshot!!.children
    children.forEach {
        if( it.child("Date").getValue().toString().equals(Data.date) && it.child("Time").getValue().toString().equals(Data.time) && it.child("location").getValue().toString().equals(items.get(0).toString())){
            //
        }

    }

children.forEach {
        if( it.child("Date").getValue().toString().equals(Data.date) && it.child("Time").getValue().toString().equals(Data.time) && it.child("location").getValue().toString().equals(items.get(1).toString())){
            //
        }

    }

children.forEach {
        if( it.child("Date").getValue().toString().equals(Data.date) && it.child("Time").getValue().toString().equals(Data.time) && it.child("location").getValue().toString().equals(items.get(2).toString())){
            //
        }

    }

1 Ответ

0 голосов
/ 15 декабря 2018

На первый взгляд 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 -> //
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...