我正在创建一个应用程序,其中管理员根据与Firebase数据库(我提供的屏幕快照)中的类别相同的类别从“管理面板”中添加Lab Services,并且运行良好,但在用户端(客户端) )我试图通过选择它们的类别来获取这些服务,例如,首先在用户端,我希望用户选择服务的类别,并通过匹配类别名称来向用户显示该类别中所有可用的服务。我正在尝试在微调器中获取该类别的血液和骨骼,是否可以在微调器中获取血液和骨骼,那么用户将以哪种方式根据类别选择服务?
答案 0 :(得分:1)
尝试匹配类别并获取以下子项:
在科特林中:
FirebaseDatabase.getInstance().reference.orderByKey().equalTo("LAB_SERVICE").addListenerForSingleValueEvent(object: ValueEventListener {
override fun onCancelled(databaseError: DatabaseError) {
}
override fun onDataChange(dataSnapshot: DataSnapshot) {
val blood = dataSnapshot.child("LAB_SERVICE").child("Blood").getValue(Blood::class.java)
val bone = dataSnapshot.child("LAB_SERVICE").child("Bone").getValue(Bone::class.java)
}
})
在 Java 中:
FirebaseDatabase.getInstance().getReference().orderByKey().equalTo("LAB_SERVICE").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Blood blood = dataSnapshot.child("LAB_SERVICE").child("Blood").getValue(Blood.class);
Bone bone = dataSnapshot.child("LAB_SERVICE").child("Bone").getValue(Blood.class);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
答案 1 :(得分:1)
是的,您可以通过节点名称获取完整的数据。
获取数据路径引用。
获取该节点的所有数据。
尝试以下代码
myRef = mainDataBaseRef.child("Lab_SERVICE")
MyDatabaseReference.myRef
.addValueEventListener(object :
ValueEventListener {
override fun onCancelled(p0: DatabaseError) {
}
override fun onDataChange(p0: DataSnapshot) {
if(p0.value!=null) {
val map: HashMap<String, Any> = p0.value as HashMap<String, Any>
for (entry in map.entries) {
val key = entry.key
val tab: HashMap<String, String> = entry.value as HashMap<String, String>
for (tab in tab.entries) {
val key = tab.key
val data = tab.value as String
list.add(data)
}
}
/*here you can use list */
}
}
})