如何使用两个Firebase ValueEventListeners将数据放入ArrayList中?

问题描述 投票:0回答:1

这只是音乐的简单应用。在SearchActivity中搜索时,我希望搜索并列出作曲家的姓名和歌曲名称。这是我在Firebase中的实时数据库。

- Artists
    - 1
        - image : "Maroon 5's image"
        - name : "Maroon 5"
    - 2
        - image : "Ruel's image_2"
        - name : "Ruel"
    ...

- Songs
    - 1
        - album : "Speak Your Mind (Deluxe)"
        - image : "album's image"
        - name : "Anne-Marie"
        - title : "2002"
        - url : "song's url"
    - 2
        - album : "On My Way"
        - image : "album's image"
        - name : "Alan Walker & Sabrina Carpenter & Farruko"
        - title : "On My Way"
        - url : "song's url"
    ...

我试图在android studio中访问这两个数据库,但是ArrayList(= array)中的数据结果始终为空。这是单击按钮SEARCH时在SearchActivity中我的kotlin代码。

FirebaseDatabase.getInstance().getReference("Artists").addListenerForSingleValueEvent(object : ValueEventListener {
    override fun onCancelled(p0: DatabaseError) {

    }

    override fun onDataChange(p0: DataSnapshot) {
        for (artist in p0.children) {
            val model = artist.getValue(Artist::class.java)
            model?.let { array.add(Model(it)) }
        }
    }
})

FirebaseDatabase.getInstance().getRefernce("Songs").addListenerForSingleValueEvent(object : ValueEventListner {
    override fun onCancelled(p0: DatabaseError) {

    }

    override fun onDataChanged(p0: DataSnapshot) {
        for (song for p0.children) {
            val model = song.getValue(Song::class.java)
            model?.let { array.add(Model(it)) }
        }
    }
})

adapter = SearchAdapter(this@SearchActivity, array)
recyclerView.adapter = adpater

是否可以访问两个数据库并获得不带空值的数组值?我知道onDatachanged()发生晚了,但是是否可以将值放入数组中,然后再放入适配器中?如果您用Java或Kotlin告诉我,我将不胜感激。

这只是音乐的简单应用。在SearchActivity中搜索时,我希望搜索作曲家的姓名和歌曲名称并一起列出。这是我在Firebase中的实时数据库。 -...

android firebase firebase-realtime-database adapter
1个回答
0
投票

哦!对不起;我有解决办法。解决方法是只添加adapter.notifyDataSetChange()```` in all onDataChange()`方法。这样,我可以从firebase中的两个数据库中获取数据。谢谢您的所有评论!

© www.soinside.com 2019 - 2024. All rights reserved.