如何从所有用户 ID (UID) 获取特定值并保存在 RecyclerView Firebase UI 中
How to get specific values from all UserID (UID) and save in RecyclerViewFirebaseUI
如何使用以下结构从我的数据库中获取所有用户的 UID,并将其保存在我的 FirebaseRecyclerviewUI 中?我已经尝试了几个小时,但我的回收站视图仍然显示为空。
-User
|
-uid
|
-advert
|
-bus_name
-category
-purl
-id
下面是我的 getter/setter BusinessListData class 用作接收值并将它们发送到 recyclerview
的模型
class BusinessListData {
var id: String = ""
var propixurl: String = ""
var business_name: String = ""
var category: String = ""
constructor(){
}
constructor(id: String, propixurl: String, business_name: String, category: String) {
this.id = id
this.propixurl = propixurl
this.business_name = business_name
this.category = category
}
fun getID(): String{
return id
}
fun getUrl(): String{
return propixurl
}
fun getBusName(): String{
return business_name
}
fun getCate(): String{
return category
}
fun setID(id: String){
this.id = id
}
fun setUrl(propixurl: String){
this.propixurl = propixurl
}
fun setBusName(business_name: String){
this.business_name = business_name
}
fun setCate(category: String){
this.category = category
}
}
我的 FirebaseRecyclerViewUI 详细信息如下。 mDatabase 是对数据库的引用,我尝试根据我的 Log.v 值获取成功的数据快照。问题是我无法在我的 Firebase 实时数据库中的 Advert 树下获取特定值
mDatabase = FirebaseDatabase.getInstance().reference
val options: FirebaseRecyclerOptions<BusinessListData> = FirebaseRecyclerOptions.Builder<BusinessListData>()
.setQuery(mDatabase, object: SnapshotParser<BusinessListData> {
override fun parseSnapshot(snapshot: DataSnapshot): BusinessListData {
Log.v("snapshotfire", snapshot.toString()) //returns all snapshot values
Log.v("snapshotfire", snapshot.child("purl").toString()) // this returns null
Log.v("snapshotfire", snapshot.child("bus_name").getValue().toString()) //this also returns null
return BusinessListData(snapshot.child("id").getValue().toString(),
snapshot.child("purl").getValue().toString(),
snapshot.child("bus_name").getValue().toString(),
snapshot.child("category").getValue().toString()
)
}
})
.build()
当您设置对 FirebaseUI 适配器的特定查询或数据库引用时,它将显示该 reference/query 的每个子节点。由于您传入数据库的根,因此将为根的每个子节点调用您的parseSnapshot
,这似乎不是您想要的。
要显示 User
节点的子节点,传入对 that 节点的引用:
mDatabase = FirebaseDatabase.getInstance().reference
val options: FirebaseRecyclerOptions<BusinessListData> = FirebaseRecyclerOptions.Builder<BusinessListData>()
.setQuery(mDatabase.child("User"), object: SnapshotParser<BusinessListData> {
...
现在您的 parseSnapshot
将被调用 User
的每个子节点,您可以从该快照中获取必要的 keys/values。
例如,要获取 UID,您可以读取快照的密钥或其 advert/uid
属性:
override fun parseSnapshot(snapshot: DataSnapshot): BusinessListData {
Log.v("snapshotfire", snapshot.key)
Log.v("snapshotfire", snapshot.child("advert/id").getValue())
)
如何使用以下结构从我的数据库中获取所有用户的 UID,并将其保存在我的 FirebaseRecyclerviewUI 中?我已经尝试了几个小时,但我的回收站视图仍然显示为空。
-User
|
-uid
|
-advert
|
-bus_name
-category
-purl
-id
下面是我的 getter/setter BusinessListData class 用作接收值并将它们发送到 recyclerview
的模型class BusinessListData {
var id: String = ""
var propixurl: String = ""
var business_name: String = ""
var category: String = ""
constructor(){
}
constructor(id: String, propixurl: String, business_name: String, category: String) {
this.id = id
this.propixurl = propixurl
this.business_name = business_name
this.category = category
}
fun getID(): String{
return id
}
fun getUrl(): String{
return propixurl
}
fun getBusName(): String{
return business_name
}
fun getCate(): String{
return category
}
fun setID(id: String){
this.id = id
}
fun setUrl(propixurl: String){
this.propixurl = propixurl
}
fun setBusName(business_name: String){
this.business_name = business_name
}
fun setCate(category: String){
this.category = category
}
}
我的 FirebaseRecyclerViewUI 详细信息如下。 mDatabase 是对数据库的引用,我尝试根据我的 Log.v 值获取成功的数据快照。问题是我无法在我的 Firebase 实时数据库中的 Advert 树下获取特定值
mDatabase = FirebaseDatabase.getInstance().reference
val options: FirebaseRecyclerOptions<BusinessListData> = FirebaseRecyclerOptions.Builder<BusinessListData>()
.setQuery(mDatabase, object: SnapshotParser<BusinessListData> {
override fun parseSnapshot(snapshot: DataSnapshot): BusinessListData {
Log.v("snapshotfire", snapshot.toString()) //returns all snapshot values
Log.v("snapshotfire", snapshot.child("purl").toString()) // this returns null
Log.v("snapshotfire", snapshot.child("bus_name").getValue().toString()) //this also returns null
return BusinessListData(snapshot.child("id").getValue().toString(),
snapshot.child("purl").getValue().toString(),
snapshot.child("bus_name").getValue().toString(),
snapshot.child("category").getValue().toString()
)
}
})
.build()
当您设置对 FirebaseUI 适配器的特定查询或数据库引用时,它将显示该 reference/query 的每个子节点。由于您传入数据库的根,因此将为根的每个子节点调用您的parseSnapshot
,这似乎不是您想要的。
要显示 User
节点的子节点,传入对 that 节点的引用:
mDatabase = FirebaseDatabase.getInstance().reference
val options: FirebaseRecyclerOptions<BusinessListData> = FirebaseRecyclerOptions.Builder<BusinessListData>()
.setQuery(mDatabase.child("User"), object: SnapshotParser<BusinessListData> {
...
现在您的 parseSnapshot
将被调用 User
的每个子节点,您可以从该快照中获取必要的 keys/values。
例如,要获取 UID,您可以读取快照的密钥或其 advert/uid
属性:
override fun parseSnapshot(snapshot: DataSnapshot): BusinessListData {
Log.v("snapshotfire", snapshot.key)
Log.v("snapshotfire", snapshot.child("advert/id").getValue())
)