firebase检索复杂的结构

时间:2017-04-19 03:34:16

标签: android firebase firebase-realtime-database

您好我是Firebase数据库的新手。目前我正在开发一个Android应用程序。我正在寻求帮助,下面是我的Firabase数据结构。可以告诉我如何检索数据。

要求是我必须检索所有公司。选择特定公司后,必须将相应的公司坐标提取到多边形形状变量中。

请帮助

enter image description here

3 个答案:

答案 0 :(得分:1)

为什么没有这样的结构:

的companyName /信息

而不是

Firebase ID /公司名称/信息

即使用update或set而不是push

答案 1 :(得分:1)

public class CompanyIds{
   public List<Company> companies;
}


FirebaseDatabase.getInstance()
                .getReference("parent node path of these ID's");

现在,在FirebaseRecyclerAdapter中,您可以做的是: -

@Override
    protected void populateViewHolder(final MessagesHolder viewHolder, CompanyIds model, int position) {
        Company = model.companies.get(0);
        //Set data on your view from Company model
    }

由于您的身份证只有一家公司,因此您只从第一家公司获得该公司。

现在点击任何项目后,您可以像设置适配器中的数据一样轻松获取公司的详细信息,如坐标或其他任何内容。这不会是个问题。

public class Company{
       List<String> Cordinates;
       List<Employees> Employees;
       //Define other fields
}

答案 2 :(得分:0)

基本上,我从重复的点击中得到了答案,并尝试解决类似的问题。

看看使用add addValueEventListner()的一般方法时,会获得有关根节点的数据库快照。因此,在第一个addValueListner()回调中,获取子节点的引用,然后在其上添加addChildEventListner()。所以这是我的建议:

 DatabaseReference databaseReference=FirebaseDatabase.getInstance().getReference();

 databaseReference.addValueEventListner(new ValueEventListner(){
 @Override
 public void onDataChange(@NonNull DataSnapshot dataSnapshot){

///此处,您的快照是相对于root用户而言的。这样您现在就可以获得子节点的参考

 datasnapshot.child("Bureau 507").getRef().addChildEventListner(new 
 ChildEventListner){
  @Override
 public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s){
  for(DataSnapshot data: dataSnapshot.getChildren()){
  //Now you are at the subtree of Bureua 507. So now you get your data in the form of 
  key and values
  } 

//remaining callbacks