@sanke46

Выводит ноль когда это не реально, почему [Kotlin]?

Как вывести в консоль sumAllvalue, count за пределами addValueEventListener ?

fun allDeviceLike() {
        var count : Int = 0
        var sumAllvalue : Int = 0

        mDeviceLikesRef.addValueEventListener(object : ValueEventListener{
            override fun onCancelled(p0: DatabaseError?) {
                TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }

            override fun onDataChange(dataSnapshot: DataSnapshot?) {
                for (child : DataSnapshot in dataSnapshot?.children!!) {
                    var objectMap : Map<String, Any>
                    objectMap = child.value as Map<String, Any>;

                    for(entary in objectMap) {
                        if(entary.key.equals("value")) {
                            count++
                            sumAllvalue += entary.value.toString().toInt()
                        }
                    }
                }

                println(sumAllvalue) // 9 [3 + 5 + 1]
                println(count) // 3 [1 + 1 + 1]
            }
        })

        println(sumAllvalue) // 0
        println(count) // 0
    }
  • Вопрос задан
  • 164 просмотра
Решения вопроса 1
KuSu
@KuSu
Android разработчик
Проблема скорее всего в том, что onDataChange() вызывается позже того, когда ты пытаешься вывести значения в консоль. То есть к моменту
println(sumAllvalue) // 0
println(count) // 0

ты еще не получил dataSnapshot и данные не обновились
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы