我使用FirebaseDatabase来保存“类别”和相关的“详细信息”,如下所示:
注意:“类别”中的categoryId充当“详细信息”的主键。
My DetailAdapter使用此查询与FirebaseUI的RecyclerAdapter配合使用:
class DetailAdapter(lifecycleOwner: LifecycleOwner, private val categoryId: String) : FirebaseRecyclerAdapter<Detail, DetailAdapter.DetailHolder>(buildOptions(lifecycleOwner, categoryId)) {
companion object {
private fun buildQuery(categoryId: String) = FirebaseDatabase.getInstance()
.reference
.child("").child("details").child(categoryId)
.limitToLast(50)
private fun buildOptions(lifecycleOwner: LifecycleOwner, categoryId: String) = FirebaseRecyclerOptions.Builder<Detail>()
.setQuery(buildQuery(categoryId), Detail::class.java)
.setLifecycleOwner(lifecycleOwner)
.build()
}
...
这完美无瑕 现在我想编写一个类似的Adapter(即名为“FavoritesAdapter”),以便只显示“favorite:[set to] true”的“details”。我可以使用buildQuery来实现这个目标吗?
答案 0 :(得分:0)
无法使用 buildQuery 来实现此目的。解决方案的关键是一种称为非规范化的策略,这是一种礼貌的方式来说明&#34;复制数据&#34; 。您可能需要观看此解释:Denormalization is normal with Firebase Database。