【发布时间】:2020-04-01 01:24:36
【问题描述】:
这只是一个简单的音乐应用程序。在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 代码,点击按钮 SEARCH。
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 告诉我,我将不胜感激。
【问题讨论】:
-
你能用你的数据库的实际 JSON 替换示意图吗(作为文本,请不要截图)?您可以通过单击Firebase Database console 上溢出菜单 (⠇) 中的“导出 JSON”链接来获取此信息。
-
请在此处查看我的答案:stackoverflow.com/questions/60896895/…
-
所以要同时搜索
Artist节点和Songs节点?
标签: android firebase firebase-realtime-database adapter