如何在Android中使用Firebase根据数据类别提取数据?

时间:2019-11-20 05:52:29

标签: android firebase firebase-realtime-database

enter image description here

我正在创建一个应用程序,其中管理员根据与Firebase数据库(我提供的屏幕快照)中的类别相同的类别从“管理面板”中添加Lab Services,并且运行良好,但在用户端(客户端) )我试图通过选择它们的类别来获取这些服务,例如,首先在用户端,我希望用户选择服务的类别,并通过匹配类别名称来向用户显示该类别中所有可用的服务。我正在尝试在微调器中获取该类别的血液和骨骼,是否可以在微调器中获取血液和骨骼,那么用户将以哪种方式根据类别选择服务?

2 个答案:

答案 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)

是的,您可以通过节点名称获取完整的数据。

  1. 获取数据路径引用。

  2. 获取该节点的所有数据。

尝试以下代码

   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 */
                }
            }

        })