当前位置: 首页 > 知识库问答 >
问题:

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

梁丘伟
2023-03-14

这只是一个简单的音乐应用程序。在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)中的数据结果始终为空。单击“搜索”按钮时,以下是我在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告诉我,我将不胜感激。

共有1个答案

丰佐
2023-03-14

哦!对不起;我有一个解决办法。解决方案只是添加adapter.notifyDataSetChange()```` allonDataChange()"方法。这样,我可以从Firebase中的两个数据库中获取数据。谢谢你所有的评论!

 类似资料:
  • 问题内容: 我想从字节数组中提取一组坐标到DoubleBuffer中。 以下是如何将一组坐标从主字节数组提取到另一个字节数组的示例。 我的问题是: 如何将geomCoords字节数组放入DoubleBuffer? 还是 可以在不创建geomCoords的情况下将这些数据放入DoubleBuffer中?速度和效率是关键,因此任何捷径或优化都是最欢迎的! 问题答案: 如果您知道字节缓冲区中的8个字节确

  • 问题内容: 我正在寻找神奇的Java类,它将允许我执行以下操作: 基本上,我想为S IN的Java。有任何想法吗? 谢谢! 问题答案: 尝试使用Apache Commons TeeOutputStream 。

  • 我有一个登记表,并将插入数据输入到两个不同的表使用注册功能。这是表结构: 使用者 用户id(int) 用户电子邮件(varchar(64)) 用户名(varchar(64)) 用户通行证(varchar(64)) 轮廓 教授id(int) 用户id(int) 名字(varchar(64)) 姓氏(varchar(64)) …(其他领域) 我将变量放入两个不同的数组($data1) 模型是这样的:

  • 我尝试在spring boot中使用两个DataSource,并按照教程配置:http://docs.spring.io/spring-boot/docs/1.3.1.release/reference/htmlsingle/#howto-two-dataSources 然后创建2个实体和2个存储库

  • 基本上,我想做的是添加2张图片,并排在JGroup的中心和JBoard右侧的JLabel,所以我被告知将JGroup的布局设置为BorderLayout并添加带有BorderLayout的图片。CENTER和带有BorderLayout的JLabel。东方。 事实上,结果是图片在JPanel的左侧,JLabel在JPanel的右侧。 非常感谢您的帮助!