【发布时间】:2018-05-29 16:09:25
【问题描述】:
我已经设置了 Firebase...
{
"items" : {
"-LDJak_gdBhZQ0NSB-7B" : { //item
"name" : "Test123",
...
},
...
},
"likes" : {
"YoTjkR2ORlcr5hGedzQs5xOK2VE3" : { //user
"-LDJiY0YSraa_RhxVWXL" : true //whether or not the item is liked
},
...
}
}
我正在用项目填充RecyclerView,但我需要知道当前用户是否喜欢每个项目。我知道我可以将每个喜欢某个项目的用户存储在项目本身中,但这似乎太多重复了。但即使这样做,我也必须检查一个用户列表,该列表为该特定用户喜欢某个项目,对于添加的每个项目。我应该忍受所有这些重复还是有一个简单的方法来处理这个?这是我使用FirebaseRecyclerAdapter的代码:
private fun setUpFirebaseAdapter() {
val ref = FirebaseDatabase.getInstance().reference
val itemQuery = ref
.child("items")
.limitToLast(20)
val itemOptions = FirebaseRecyclerOptions.Builder<Item>()
.setQuery(itemQuery, Item::class.java)
.build()
firebaseAdapter = object : FirebaseRecyclerAdapter<Item, FirebaseViewHolder>(itemOptions) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FirebaseViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_row, parent, false)
return FirebaseViewHolder(view)
}
override fun onBindViewHolder(holder: FirebaseViewHolder, position: Int, model: Item) {
holder.bindItems(model)
//...
}
}
}
我知道有索引支持,但我认为这只允许我只返回喜欢的项目。
【问题讨论】:
标签: android firebase firebase-realtime-database kotlin