Исключение NullPointer при получении данных из базы данных Firebase - PullRequest
0 голосов
/ 25 февраля 2019

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

class Request {
    var Name: String? = null
    var Phone: String? = null
    var Street: String? = null
    var Home:String?= null
    var Flat:String?=null
    var Status: String?=null  
}

Вот как я получаю данные

var mDatabase=FirebaseDatabase.getInstance().reference
mDatabase.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(p0: DataSnapshot) {
        for (d in p0.children) {
            var modelRequest: Request? = d.child("Requests").child(user.toString()).getValue(Request::class.java)
            var ord: Order? =d.child("Orders").getValue(Order::class.java)
            Log.d("loadedList", "ok")
            requestList.add(modelRequest!!)

        }

    }
})

Вот мои данныеструктура

enter image description here

1 Ответ

0 голосов
/ 25 февраля 2019

Вы просматриваете узлы верхнего уровня в своей базе данных (Food, Requests и т. Д.), А затем получаете Requests дочерний узел каждого из них.Так как /Requests/Requests не всегда будет null.

Это должно быть ближе:

override fun onDataChange(snapshot: DataSnapshot) {
    var modelRequest: Request? = snapshot.child("Requests").child(user.toString()).getValue(Request::class.java)
    var ord: Order? =snapshot.child("Orders").getValue(Order::class.java)
    Log.d("loadedList", "ok")
    requestList.add(modelRequest!!)
}

Обратите внимание, что теперь вы загружаете все данные из базы данных, чтобытогда используйте только узлы Requests и Orders.Это бесполезная трата пропускной способности, поэтому вам действительно нужно запрашивать только те данные, которые вам нужны.Вы можете сделать это, подключив двух слушателей и ожидая результатов обоих.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...